繁体   English   中英

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

[英]How do I deserialize an array of JSON objects to a C# anonymous type?

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

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

到C#匿名类型:

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

但是当我有一个数组时:

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

我被卡住了。

怎么做到呢?

解决方案是:

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()和类似的方法。

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

dynamic result = JsonConvert.DeserializeObject(jsonArray);

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

这段代码对我有用:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM