首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法反序列化json列表。

无法反序列化json列表。
EN

Stack Overflow用户
提问于 2017-08-21 06:16:49
回答 1查看 1.3K关注 0票数 0

这是邮递员给我的JSON结果

代码语言:javascript
复制
{
    "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反序列化如下:

代码语言:javascript
复制
    [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。

看上去我好像错过了什么但我搞不懂。你能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-21 07:06:31

这是从c#生成的de http://json2csharp.com/类。

代码语言:javascript
复制
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

代码语言:javascript
复制
[BindProperty]
public RootObject dataList { get; set; }

var jsonAsString = customIndexModel.ApiResponseMessage.Content.ReadAsStringAsync().Result;
dataList = JsonConvert.DeserializeObject<RootObject>(jsonAsString);

在JSOn反序列化之后,我可以使用Razor页面中的结果,如下所示

代码语言:javascript
复制
@foreach (var item in Model.dataList.result)
{
++rowNumber;
<tr>
<td>@item.code</td>
<td>@item.name</td>
<td>@item.isActive</td>
</

谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45790390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档