我有一個JSON字符串看起來像這樣:Json.Net反序列化,保留一些屬性序列化的
{
"Bar": {
"Pressure":42,
"ServesDrinks":false
},
"Baz":[
{
"Pressure":9001,
"ServesDrinks":true
},
{
"Pressure":0,
"ServesDrinks":false
}
]
}
而且我想這個反序列化到一個類看起來像這樣:
public class Foo
{
public Bar Bar { get; set; }
/// <summary>
/// Raw serialized (un-de-serialized) json string of the Baz list
/// </summary>
public string Baz { get; set; }
}
基本上不反序列化Baz值,而是存儲原始字符串。 也就是說我想序列化後的Baz
字符串值是:
「[{\」 壓力\ 「:9001,\」 ServesDrinks \ 「:真正},{\」 壓力\ 「:0,\」 ServesDrinks \ 「:false}]」
我正在使用Json.Net,但還沒有設法弄清楚如何做到這一點。 在理想情況下,我只想在保留原始JSON的Baz
屬性上放置一個魔術屬性。
我看到這裏非常類似的問題: Partially deserialize with JSON.NET, keeping some fields raw
但我知道如何與JObject
辦法去。
(如果它的任何幫助,我知道我要保留的數據列表)
感謝任何幫助!
另一個問題建議將Baz字段更改爲'JObject',它是表示JSON對象的泛型類型。您可以使用'Baz.ToString()'獲得JSON字符串,並使用'JObject.parse(aJSONString)'分配給它。 –
謝謝Jakub,但是我無法做到這一點。我得到一個JsonReaderException:「錯誤讀取字符串。意外的標記:StartArray。路徑'Baz',第1行,位置8。 –
您可以嘗試使用'JArray'。我看了一下JSON.Net文檔,看起來'JArray'用於處理JS數組,'JObject'只能用於真正的JS對象('{foo:...}')。下面給出了一個更完整的答案。 –