这是邮递员给我的JSON结果
{
"result": [
{
"brands": [],
"services": [],
"addresses": [],
"accessPoints": [],
"Kodu": "100",
"name": "üeticissdss",
"taxNumber": "asd",
"taxOffice": "sada",
"id": "bfb064f4-0732-43ab-9d94-87f6934258fe",
"isActive": true
},
{
"brands": [],
"services": [],
"addresses": [],
"accessPoints": [],
"Kodu": "100",
"name": "üeticissdss",
"taxNumber": "asd",
"taxOffice": "sada",
"id": "bfb064f4-0732-43ab-9d94-87f69d4258fe",
"isActive": true
}
],
"id": 13,
"exception": null,
"status": 5,
"isCanceled": false,
"isCompleted": true,
"isCompletedSuccessfully": true,
"creationOptions": 0,
"asyncState": null,
"isFaulted": false
}我正试图将json反序列化如下:
[BindProperty]
public List<Manufacturer> manufacturer { get; set; }
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(apiParameters.HttpClientBaseAddress);
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(apiParameters.DefaultRequestHeadersJson));
customIndexModel.ApiResponseMessage = await httpClient.GetAsync(apiParameters.HttpClientBaseAddress);
if (customIndexModel.ApiResponseMessage.IsSuccessStatusCode)
{
var jsonAsString = customIndexModel.ApiResponseMessage.Content.ReadAsStringAsync().Result;
manufacturer = JsonConvert.DeserializeObject<List<Manufacturer>>(jsonAsString);
}错误信息:
无法将当前JSON对象(例如,{“名称”:“值”})反序列化为'System.Collections.Generic.List`1Q.Entity.Manufacturer.Manufacturer‘类型,因为该类型需要一个JSON数组(例如,1,2,3)才能正确反序列化。要修复此错误,要么将JSON更改为JSON数组(例如,1,2,3),要么更改反序列化类型,使之成为可以从JSON对象反序列化的普通.NET类型(例如,不像整数这样的原始类型,而不是数组或列表之类的集合类型)。还可以将JsonObjectAttribute添加到类型中,以强制它从JSON对象反序列化。路径‘结果’,第1行,位置10。
看上去我好像错过了什么但我搞不懂。你能帮帮我吗?
发布于 2017-08-21 07:06:31
这是从c#生成的de http://json2csharp.com/类。
public class Result
{
public List<object> brands { get; set; }
public List<object> services { get; set; }
public List<object> addresses { get; set; }
public List<object> accessPoints { get; set; }
public string Kodu { get; set; }
public string name { get; set; }
public string taxNumber { get; set; }
public string taxOffice { get; set; }
public string id { get; set; }
public bool isActive { get; set; }
}
public class RootObject
{
public List<Result> result { get; set; }
public int id { get; set; }
public object exception { get; set; }
public int status { get; set; }
public bool isCanceled { get; set; }
public bool isCompleted { get; set; }
public bool isCompletedSuccessfully { get; set; }
public int creationOptions { get; set; }
public object asyncState { get; set; }
public bool isFaulted { get; set; }
}我将JSON反序列化为dataList
[BindProperty]
public RootObject dataList { get; set; }
var jsonAsString = customIndexModel.ApiResponseMessage.Content.ReadAsStringAsync().Result;
dataList = JsonConvert.DeserializeObject<RootObject>(jsonAsString);在JSOn反序列化之后,我可以使用Razor页面中的结果,如下所示
@foreach (var item in Model.dataList.result)
{
++rowNumber;
<tr>
<td>@item.code</td>
<td>@item.name</td>
<td>@item.isActive</td>
</谢谢。
https://stackoverflow.com/questions/45790390
复制相似问题