第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 c# asp .net core 中將 json 反序列化為 IEnumerable

在 c# asp .net core 中將 json 反序列化為 IEnumerable

C#
人到中年有點甜 2021-10-09 16:23:13
我有一個 json 對象。我想將它反序列化為該IEnumerable類型的對象。我在asp.net Core 工作。我是這樣嘗試的:IEnumerable div = (IEnumerable)JsonConvert.DeserializeObject(value, typeof(IEnumerable));這里的值是 json 變量。我得到了這種類型的異常:Newtonsoft.Json.JsonSerializationException: '無法將當(dāng)前 JSON 對象(例如 {"name":"value"})反序列化為類型'System.Collections.IEnumerable',因為該類型需要一個 JSON 數(shù)組(例如 [1,2,3] ) 以正確反序列化。要修復(fù)此錯誤,請將 JSON 更改為 JSON 數(shù)組(例如 [1,2,3])或更改反序列化類型,使其成為普通的 .NET 類型(例如,不是像整數(shù)這樣的原始類型,而不是像這樣的集合類型)可以從 JSON 對象反序列化的數(shù)組或列表)。JsonObjectAttribute 也可以添加到類型中以強制它從 JSON 對象反序列化。
查看完整描述

3 回答

?
慕哥6287543

TA貢獻1831條經(jīng)驗 獲得超10個贊

1) 如果您的 json 是一個對象,例如 MyUser


public class MyUser

{

    public int Id { get; set; }    

    public string Name { get; set; }    

    public string Description { get; set; }

}

你的json是


{

   "Id": 1,

   "Name": "Andrew",

   "Description": "Software Engineer"

}

然后您可以使用以下代碼輕松反序列化


MyUser user = JsonConvert.DeserializeObject<MyUser>(data);

上面代碼中的“數(shù)據(jù)”是你的json文件數(shù)據(jù)。


2) 如果您的 json 是一個對象數(shù)組,例如 MyUser 數(shù)組。


{

  "Users": [

    { "Id": 1, "Name": "Andrew", "Description": "Software Engineer"},

    { "Id": 2, "Name": "Eddy", "Description": "Software Developer"},

    { "Id": 3, "Name": "Matthew", "Description": "Web Developer"}

  ]

}

那么你需要一個 IEnumerable 類型屬性 MyUser 的視圖模型來反序列化


public class MyUserVM

{

    public IEnumerable<MyUser> Users { get; set; }

}

然后你需要使用上面的視圖模型反序列化


MyUserVM users = JsonConvert.DeserializeObject<MyUserVM>(data);

上面代碼中的“數(shù)據(jù)”是你的json文件數(shù)據(jù)。


Q) 為什么這里需要視圖模型?


A) 因為 json 是一種基于文本的鍵值格式數(shù)據(jù),您需要一個鍵才能在 JsonConvert 類中讀取它。


編輯:


你請改變你的json鍵,如下所示


{

  "name": "xx",

  "place": {

    "native": "aa",

    "school": "ee",

    "college": "dd"

  },

  "dob": "ss",

  "ids": [

    0,

    1,

    2,

    3,

    4,

    5,

    6,

    7,

    8,

    9,

    10,

    11,

    12,

    13,

    14,

    15,

    16,

    17,

    18,

    19,

    20,

    21,

    22,

    23,

    24,

    25,

    26,

    27,

    28,

    29,

    30,

    31,

    32,

    33,

    34,

    35,

    36,

    37,

    38,

    39,

    40,

    41,

    42,

    43,

    44,

    45,

    46,

    47,

    48,

    49,

    50,

    51,

    52,

    53,

    54,

    55,

    56,

    57,

    58,

    59,

    60,

    61,

    62,

    63,

    64,

    65,

    66,

    67,

    68,

    69,

    70,

    71,

    72,

    73,

    74,

    75,

    76,

    77,

    78,

    79,

    80,

    81,

    82,

    83,

    84,

    85,

    86,

    87,

    88,

    89,

    90,

    91,

    92,

    93,

    94,

    95,

    96,

    97,

    98,

    99,

    100,

    101,

    102,

    103,

    104,

    105,

    106,

    107,

    108,

    109,

    110,

    111,

    112,

    113,

    114,

    115,

    116,

    117,

    118,

    119,

    120

  ],

  "mark": [

    {

      "tenthmark": "345",

      "twelthmark": "1100"

    },

    {

      "Diploma": "G",

      "DiplomaPG": "R"

    },

    {

      "Ug": "D",

      "PG": "E"

    }

  ]

}

并使用我為您創(chuàng)建的以下視圖模型


public class Place

{

    public string native { get; set; }

    public string school { get; set; }

    public string college { get; set; }

}


public class Mark

{

    public string tenthmark { get; set; }

    public string twelthmark { get; set; }

    public string Diploma { get; set; }

    public string DiplomaPG { get; set; }

    public string Ug { get; set; }

    public string PG { get; set; }

}


public class RootObject

{

    public string name { get; set; }

    public Place place { get; set; }

    public string dob { get; set; }

    public List<int> ids { get; set; }

    public List<Mark> mark { get; set; }

}

然后使用反序列化


RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(data);


查看完整回答
反對 回復(fù) 2021-10-09
?
婷婷同學(xué)_

TA貢獻1844條經(jīng)驗 獲得超8個贊

您不能只是反序列化為 IEnumerable...您需要一個模型來放入數(shù)據(jù)。您需要一個反映您的 JSON 結(jié)構(gòu)的 ViewModel,然后您可以輕松地反序列化為您的 ViewModel 類型的 IEnumerable。

JsonConvert.DeserializeObject<IEnumerable<SomeViewModel>>(jsonData)


查看完整回答
反對 回復(fù) 2021-10-09
?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

您不能反序列化為接口,只能反序列化為具體類型,例如 List of T


查看完整回答
反對 回復(fù) 2021-10-09
  • 3 回答
  • 0 關(guān)注
  • 501 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號