使用NewtonSoft将JSON反序列化为.net对象

本文关键字:net 对象 反序列化 JSON NewtonSoft 使用 | 更新日期: 2023-09-27 18:24:37

我正在使用Newtonsoft的JSON Parser。

我获得json作为响应。并且每次都可能不同。可能的变体:
1.

[
       {
        "type": "typing",
           "updates": [
               {
                   "__type": "qwerty"
                }
            ]
        }
] 


2.

[ 
    {
        "token": 1111,
        "type": "msg",
        "updates": [           
            {
                "__type": "asdfg",
                ....
            },
            {
                "__type": "asdfg",
                ....
            },
        ]
    },
    {
        "type": "typing",
        "updates": [
            {
                "__type": "qwerty"
            }
        ]
    }
]

问题是,我的对象应该具有什么结构来解析任何类型的json?

var jToken = JToken.Parse(myResponse);
var obj = jToken.ToObject<MyObject>();
class MyObject
{
// what structure should i have here?
}

使用NewtonSoft将JSON反序列化为.net对象

它们不是不同的对象。您的服务返回一个对象数组,其中每个对象都包含一个"更新"数组

var myobj =   JsonConvert.DeserializeObject<MyObject[]>(json);
public class MyObject
{
    public string token;
    public string type;
    public Update[] updates;
}
public class Update
{
    public string __type;
}

我建议研究一个用于.NET.的内置JSON序列化程序

在System.Runtime.Serialization.Json.DataContractJsonSerializer 中找到一个(两者中较好的)

另一个在System.Web.Script.Serialization

以下是关于如何使用DataContractJsonSerializer的详细说明。