反序列化单个json对象没有问题
string json = @"{'Name':'Mike'}";
到C#匿名类型:
var definition = new { Name = ""};
var result = JsonConvert.DeserializeAnonymousType(json, definition);
但是当我有一个阵列时:
string jsonArray = @"[{'Name':'Mike'}, {'Name':'Ben'}, {'Name':'Razvigor'}]";
我被困住了。
怎么做?
答案 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);