Ответ 1
Json.NET JsonSerializer автоматически не выводит комментарии при сериализации. Вам нужно будет написать свой JSON вручную, используя JsonTextWriter или LINQ to JSON, если вы хотите комментировать
Можно ли автоматически добавлять комментарии к сериализованному выводу из JSON.Net?
В идеале я бы подумал, что это похоже на следующее:
public class MyClass
{
[JsonComment("My documentation string")]
public string MyString { get; set; }
}
или (даже лучше, если можно избежать аннотаций):
public class MyClass
{
/// <summary>
/// My documentation string
/// </summary>
public string MyString { get; set; }
}
который будет производить:
{
//My documentation string
"MyString": "Test"
}
Причина, по которой я спрашиваю, заключается в том, что мы используем Json.NET для сериализации файла конфигурации, который впоследствии можно было изменить вручную. Я хотел бы включить документацию в свои классы конфигурации С# и воспроизвести ее в JSON, чтобы помочь тем, кто может изменить файл позже.
Обновление. Как указано в RoToRa ниже, комментарии не могут быть технически разрешены в спецификации JSON (см. удобные синтаксические диаграммы на http://www.json.org). Однако таблица функций на сайте Json.NET включает в себя:
Поддержка чтения и записи комментариев
и Newtonsoft.Json.JsonTextWriter.WriteComment(string)
, который выводит комментарий. Я заинтересован в аккуратном способе создания комментариев, а не непосредственно с помощью JsonTextWriter
.
Json.NET JsonSerializer автоматически не выводит комментарии при сериализации. Вам нужно будет написать свой JSON вручную, используя JsonTextWriter или LINQ to JSON, если вы хотите комментировать
Проблема заключается в том, что JSON в качестве формата файла не поддерживает комментарии. Одна вещь, которую вы могли бы сделать - если приложение, читающее JSON файл, разрешает это, - использовать дополнительные свойства в качестве комментариев, предложенных в этом вопросе: Можно ли использовать комментарии в JSON?
Как уже сказал @RoToRa, JSON не разрешает комментировать.
Если вам все еще нужны комментарии, и вы хотите вывести правильный JSON, вы можете просто сделать комментарии частью фактических данных JSON, изменив структуру данных. Например:
{
"MyString": {
"doc": "My documentation string",
"value": "Test"
}
}