3

我有一个看起来像这样的 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 值,而是存储原始字符串。即我希望Baz序列化后的字符串值为:

"[{\"Pressure\":9001,\"ServesDrinks\":true},{\"Pressure\":0,\"ServesDrinks\":false}]"

我正在使用 Json.Net,但还没有弄清楚如何做到这一点。在理想情况下,我只想在Baz保留原始 json 的属性上放置一个魔术属性。

我在这里看到了一个非常相似的问题: Partially deserialize with JSON.NET, keep some fields raw

但我确实明白如何采用这种JObject方法。

(如果有帮助,我知道我要保留的数据是一个列表)

感谢您的帮助!

4

1 回答 1

2

根据对另一个问题的回答,JSON.Net 中针对此类情况的解决方案似乎是使用适当的J*类型并使用它们的ToString()Parse()方法来处理 JSON 字符串。

对于 JS 列表,适当的类型似乎是JArray,而不是JObject,用于{}样式 Javascript 对象。

请注意,我对 JSON.Net 知之甚少,也许有一种不同的解决方案可以避免在Parse()任何ToString()地方使用。对该库有更好了解的人可能会给出更好的答案。

于 2013-06-26T11:15:18.010 回答