使用Json.NET反序列化

时间:2015-08-03 14:15:27

标签: c# json.net

以下是API的回复:

{"success":true,"data":[{"_id":"559276d1f21a16dc28f8cd67","name":"Businessman","__v":0}]}

所有服务器方法都以以下格式返回Json对象:

{ "success": "true/false", data: "object_array[]" }

或:

{ "success": "true/false", data: "single_object" }

所以我应该为响应提供一个C#对象,并且我需要为"数据"提供不同的对象类型。部分回应。 "数据"属性将是不同类型的数组,有时是单个对象。

是否有动态方式来处理这种情况,还是应该为每个响应定义不同的类型?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用dynamic关键字。

dynamic jObj = JObject.Parse(json);
Console.WriteLine(jObj.success);

if(jObj.data is JArray)
{
    Console.WriteLine(jObj.data[0].name);
}

if (jObj.data is JObject)
{
    Console.WriteLine(jObj.data.name);
}