簡體   English   中英

無法反序列化json列表

[英]can not deserialize json list

這是我郵遞員的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對象(例如{“ name”:“ value”})為類型'System.Collections.Generic.List`1 [Q.Entity.Manufacturer.Manufacturer]',因為該類型需要JSON數組(例如[ 1,2,3])正確反序列化。 要解決此錯誤,可以將JSON更改為JSON數組(例如[1,2,3]),也可以更改反序列化類型,使其成為普通的.NET類型(例如,不像整數這樣的原始類型,也不像這樣的集合類型)數組或列表),可以從JSON對象反序列化。 還可以將JsonObjectAttribute添加到類型中,以強制其從JSON對象反序列化。 路徑“結果”,第1行,位置10。

看起來我想念某些東西,但我不知道。 請問你能幫幫我嗎 ?

這是從http://json2csharp.com/生成的de c#類

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>
</

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM