在 C# 中反序列化复杂对象
deserialize complex object in C#
我有一个无法反序列化的 JSON 对象。它因以下错误而失败:
Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List1[SampleObj]' because the type requires a JSON array.
JSON:
"{\"rows\":
[
{\"ID\":1,
\"Name\":\"Puz\"
},
{\"ID\":2,
\"Name\":\"Kez\"
}
]
}"
我尝试使用 Newtonsoft 进行以下操作:
var deserializeObject = JsonConvert.DeserializeObject<List<SampleObj>>(jsonString);
下面的尝试是使用 JavaScriptSerializer。
JavaScriptSerializer oJS = new JavaScriptSerializer();
List<SampleObj> deserializeObject = new List<ReportColumns>();
deserializeObject = oJS.Deserialize<List<ReportColumns>>(jsonString);
但是都报错
可以使用以下命令安装 Newtonsoft:
PM>Install-Package Newtonsoft.Json -Version 13.0.1
用法示例:
string json = @"{
'Email': 'james@example.com',
'Active': true,
'CreatedDate': '2013-01-20T00:00:00Z',
'Roles': [
'User',
'Admin'
]
}";
Account account = JsonConvert.DeserializeObject<Account>(json);
Console.WriteLine(account.Email);
您的反序列化 class 似乎与提供的 JSON 结构不匹配。像这样的东西应该适合你:
public class Foo
{
public List<Bar> rows { get; set; }
}
public class Bar
{
public int ID { get; set; }
public string Name { get; set; }
}
Foo deserializeObject = oJS.Deserialize<Foo>(jsonString);
我有一个无法反序列化的 JSON 对象。它因以下错误而失败:
Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List1[SampleObj]' because the type requires a JSON array.
JSON:
"{\"rows\":
[
{\"ID\":1,
\"Name\":\"Puz\"
},
{\"ID\":2,
\"Name\":\"Kez\"
}
]
}"
我尝试使用 Newtonsoft 进行以下操作:
var deserializeObject = JsonConvert.DeserializeObject<List<SampleObj>>(jsonString);
下面的尝试是使用 JavaScriptSerializer。
JavaScriptSerializer oJS = new JavaScriptSerializer();
List<SampleObj> deserializeObject = new List<ReportColumns>();
deserializeObject = oJS.Deserialize<List<ReportColumns>>(jsonString);
但是都报错
可以使用以下命令安装 Newtonsoft:
PM>Install-Package Newtonsoft.Json -Version 13.0.1
用法示例:
string json = @"{
'Email': 'james@example.com',
'Active': true,
'CreatedDate': '2013-01-20T00:00:00Z',
'Roles': [
'User',
'Admin'
]
}";
Account account = JsonConvert.DeserializeObject<Account>(json);
Console.WriteLine(account.Email);
您的反序列化 class 似乎与提供的 JSON 结构不匹配。像这样的东西应该适合你:
public class Foo
{
public List<Bar> rows { get; set; }
}
public class Bar
{
public int ID { get; set; }
public string Name { get; set; }
}
Foo deserializeObject = oJS.Deserialize<Foo>(jsonString);