簡體   English   中英

無法將 json 字符串轉換為 c# 對象,出現錯誤-因為該類型需要 JSON 數組

[英]not able to convert json string into c# object , getting error- because the type requires a JSON array

我想將 json 數據轉換為 C#,我在將 json 字符串轉換為 C# 對象時出錯。

代碼

   List<Root> list = new List<Root>();
        list = JsonConvert.DeserializeObject<List<Root>>(jsonString);

json數據

    {
        "Set1": [
            {
                "TotalColumns": "5",
            "Header": "Date",
            "DataType": "DateTime",
            "MaxLength": "8"
        },
        {
            "TotalColumns": "5",
            "Header": "Code",
            "DataType": "Int",
            "MaxLength": "6"
        },
        {
            "TotalColumns": "5",
            "Header": "Description",
            "DataType": "String",
            "MaxLength": "500"
        },
        {
            "TotalColumns": "5",
            "Header": "Qty",
            "DataType": "Int",
            "MaxLength": "6"
        },
        {
            "TotalColumns": "5",
            "Header": "Amount",
            "DataType": "Double",
            "MaxLength": "100"
        }
    ]
}

C# 類

public class Set1
    {
        public string TotalColumns { get; set; }
        public string Header { get; set; }
        public string DataType { get; set; }
        public string MaxLength { get; set; }
    }

public class Root
{
    public List<Set1> Set1 { get; set; }
}

錯誤

將當前 JSON 對象(例如 {"name":"value"})反序列化為類型 'System.Collections.Generic.List`1[....Root]' 因為該類型需要 JSON 數組

您實際上是在嘗試將 JSON 轉換為List<Root> ,但 JSON 不包含Root類的數組。

您可以做的是將您的 JSON 反序列化為Root實例而不是List<Root> ,但如果您絕對想將其反序列化為List<Root> ,那么您的問題出在生成 JSON 的代碼中,它不會t 序列化一個List但一個Root實例。

你有 2 個變種

  1. 獲取根對象
Root root = JsonConvert.DeserializeObject<Root>(jsonString);
  1. 獲取列表
 List<Set1> Set1 = JObject.Parse(jsonString)["Set1"].ToObject<List<Set1>>();

暫無
暫無

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

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