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

时间:2012-02-13 11:30:04

标签: c# json json.net

我正在使用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?
}

2 个答案:

答案 0 :(得分:2)

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

var myobj =   JsonConvert.DeserializeObject<MyObject[]>(json);

public class MyObject
{
    public string token;
    public string type;
    public Update[] updates;
}
public class Update
{
    public string __type;
}

答案 1 :(得分:0)

我建议查看一个用于.NET的内置JSON序列标识符。

System.Runtime.Serialization.Json.DataContractJsonSerializer

中有一个(两者中较好者)

另一个是 System.Web.Script.Serialization

Here详细说明了如何使用DataContractJsonSerializer