2012-02-29 80 views
13

有沒有一種方法可以自動添加評論到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

+0

@JamesNewtonKing是否有類似此類計劃或可用的內容? – nikeee 2015-08-21 17:00:09

回答

5

的Json.NET JsonSerializer不序列化時自動輸出評論。您需要手動編寫您的JSON,如果您想要評論,請使用JsonTextWriter或LINQ to JSON

+5

@JamesNewtonKing我已經爲最新的Json.NET寫了一個小補丁,爲'JsonProperty'(和'JsonPropertyAttribute')添加一個'Comment'屬性。這個想法是,在'SerializeMemberInfo'期間,如果'Comment'不是null/empty,那麼它會被寫出JSON中的鍵/值對之上。在我繼續完成之前,你會對此感興趣嗎? – 2012-03-01 08:25:31

+1

我會看看它,看看你是如何做到的,以及我是否認爲這對別人有用 - http://json.codeplex.com/SourceControl/list/patches/upload – 2012-03-01 22:03:37

+1

@AdamRodger dole還有補丁嗎?我無法在網上找到它。 – nikeee 2015-08-03 22:54:10

4

問題是作爲文件格式的JSON不支持註釋。你可以做的一件事 - 如果閱讀JSON文件的應用程序允許它 - 則使用附加屬性作爲此問題中建議的註釋:Can comments be used in JSON?

2

由於@RoToRa已經說過,JSON不允許註釋。

如果你仍然想要評論,並且你想輸出正確的JSON,你可以通過改變數據佈局來讓實際的JSON數據的註釋部分。例如:

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