我有一个类似这样的 json 字符串:
{
"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 值,而是存储原始字符串。
IE。我希望序列化后的 Baz
字符串值为:
"[{\"Pressure\":9001,\"ServesDrinks\":true},{\"Pressure\":0,\"ServesDrinks\":false}]"
我正在使用 Json.Net,但还没有弄清楚如何执行此操作。
在理想情况下,我只想在保留原始 json 的 Baz
属性上放置一个魔法属性。
我在这里看到了一个非常相似的问题: Partially deserialize with JSON.NET, keeping some fields raw
但我确实了解如何使用 JObject
方法。
(如果有帮助,我知道我要保留的数据是一个列表)
感谢任何帮助!
最佳答案
根据对另一个问题的回答,似乎 JSON.Net 中针对此类情况的解决方案是使用适当的 J*
类型并使用它们的 ToString()
和 Parse()
方法来处理 JSON 字符串。
对于 JS 列表,合适的类型似乎是 JArray
,而不是 JObject
,后者用于 {}
样式的 Javascript 对象。
请注意,我对 JSON.Net 知之甚少,也许有一个不同的解决方案可以避免在任何地方使用 Parse()
和 ToString()
.对该库有更多了解的人可能会给出更好的答案。
关于Json.Net 反序列化,保持一些属性未序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17316790/