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

标签 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 值,而是存储原始字符串。 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/

相关文章:

javascript - 简单的语法检查程序-最优数据结构

iphone - 这个解析 XHTML 的 XPath 查询是错误的吗?使用 TouchXML

json.net - Noda 时间实例值未正确反序列化

c# - Xamarin HTTPClient : Error when accessing specific web service

python - 如何通过curl向couchDB中插入数百万文档?

c# - 将 JSON 数据发布到 ASP.NET 应用程序

javascript - 在 Javascript 中迭代 JSON 响应

c# - 如何使用 Json.NET 反序列化可以是两种不同数据类型的 JSON 属性

vb.net - 如何将 JSON 文件序列化和反序列化为 DataTable 以填充 DataGridView?

json - 如何从 JSF 生成 JSON 响应?