简体   繁体   English

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

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

I have no problem deserializing a single json object 反序列化单个json对象没有问题

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

to a C# anonymous type: 到C#匿名类型:

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

But when I have an array: 但是当我有一个数组时:

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

I am stuck. 我被卡住了。

How can it be done? 怎么做到呢?

The solution is: 解决方案是:

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

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

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

Of course, since result is an array, you'll access individual records like so: 当然,由于result是一个数组,你可以像这样访问各个记录:

string firstResult = result[0].Name;

You can also call .ToList() and similar methods on it. 你也可以调用.ToList()和类似的方法。

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

dynamic result = JsonConvert.DeserializeObject(jsonArray);

One approach is to put an identifier in your JSON array string. 一种方法是在JSON数组字符串中放置一个标识符。

This code worked for me: 这段代码对我有用:

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