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

有没有办法可以自动为JSON.Net的序列化输出添加注释?

理想情况下,我认为它类似于以下内容:

public class MyClass { [JsonComment("My documentation string")] public string MyString { get; set; } } 

或者(如果可以避免注释,则更好):

 public class MyClass { ///  /// My documentation string ///  public string MyString { get; set; } } 

会产生:

 { //My documentation string "MyString": "Test" } 

我问的原因是我们使用Json.NET来序列化配置文件,以后可以手动更改。 我想在我的C#配置类中包含文档,并在JSON中重现这些文档,以帮助以后可能需要更改文件的人。

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

支持阅读和撰写评论

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" } }