如何为Json.NET输出添加注释?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为Json.NET输出添加注释?相关的知识,希望对你有一定的参考价值。

有没有办法可以自动添加注释到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来序列化配置文件,以后可以手动更改。我想在我的C#配置类中包含文档,并在JSON中重现这些文档,以帮助以后可能需要更改文件的人。

更新:正如RoToRa在下面指出的那样,在JSON规范中技术上不允许发表评论(请参阅http://www.json.org上方便的语法图)。但是,Json.NET site上的功能表包括:

支持阅读和撰写评论

Newtonsoft.Json.JsonTextWriter.WriteComment(string)存在,它输出评论。我对创建注释的简洁方式感兴趣,而不是直接使用JsonTextWriter

答案

序列化时,Json.NET JsonSerializer不会自动输出注释。如果你想要评论,你需要手动编写你的JSON,使用JsonTextWriter或LINQ to JSON

另一答案

问题是JSON作为文件格式不支持注释。您可以做的一件事 - 如果阅读JSON文件的应用程序允许它 - 是使用其他属性作为此问题中建议的注释:Can comments be used in JSON?

另一答案

正如@RoToRa已经说过,JSON不允许发表评论。

如果您仍想要注释,并且想要输出正确的JSON,则可以通过更改数据布局将注释作为实际JSON数据的一部分。例如:

{
    "MyString": {
        "doc":   "My documentation string",
        "value": "Test"
    } 
}

以上是关于如何为Json.NET输出添加注释?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Hibernate 查询注释添加限制?

如何为 youtube 添加 wmode="opaque" 或 wmode="transparent" 到这个 php 片段? [复制]

如何为输出添加更多值?

如何为 XSLT 代码片段配置 CruiseControl 的 C# 版本?

如何为我的 ADC 输出添加迟滞?

如何为字段的注释生成 Dart 代码?