我有一个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:...}')。下面给出了一个更完整的答案。 –