Json.Net反序列化,保持一些属性不反序列化

时间:2013-06-26 09:48:54

标签: json parsing json.net json-deserialization

我有一个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字符串值为:

  

“[{\” 压力\ “:9001,\” ServesDrinks \ “:真},{\” 压力\ “:0,\” ServesDrinks \ “:假}]”

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

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

但我确实理解如何采用JObject方法。

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

感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

根据对其他问题的回答,似乎JSON.Net中针对此类案例的解决方案是使用相应的J*类型并使用他们的ToString()Parse()使用JSON字符串的方法。

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

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