如何将JSON对象数组反序列化为C#匿名类型?

时间:2017-08-21 12:24:50

标签: c# json json.net

反序列化单个json对象没有问题

string json = @"{'Name':'Mike'}";

到C#匿名类型:

var definition = new { Name = ""};
var result = JsonConvert.DeserializeAnonymousType(json, definition);

但是当我有一个阵列时:

string jsonArray = @"[{'Name':'Mike'}, {'Name':'Ben'}, {'Name':'Razvigor'}]";

我被困住了。

怎么做?

3 个答案:

答案 0 :(得分:3)

您可以通过此方式反序列化为动态对象。

dynamic result = JsonConvert.DeserializeObject(jsonArray);

答案 1 :(得分:3)

解决方案是:

string json = @"[{'Name':'Mike'}, {'Name':'Ben'}, {'Name':'Razvigor'}]";

var definition = new[] { new { Name = "" } };

var result = JsonConvert.DeserializeAnonymousType(json, definition);

当然,由于result是一个数组,因此您将像这样访问各个记录:

string firstResult = result[0].Name;

您还可以在其上调用.ToList()和类似方法。

答案 2 :(得分:1)

一种方法是在JSON数组字符串中放置一个标识符。

此代码对我有用:

var typeExample = new { names = new[] { new { Name = "" } } };
string jsonArray = @"{ names: [{'Name':'Mike'}, {'Name':'Ben'}, {'Name':'Razvigor'}]}";

var result = JsonConvert.DeserializeAnonymousType(jsonArray, typeExample);