如何将Json数组转换为C#中的对象列表

如何将Json数组转换为C#中的对象列表,第1张

如何将Json数组转换为C#中的对象列表

正如其他人已经指出的那样,未获得预期结果的原因是因为JSON与尝试反序列化的类结构不匹配。您需要更改JSON或更改类。由于其他人已经展示了如何更改JSON,因此在这里我将采用相反的方法。

为了与您在问题中发布的JSON相匹配,您的类应按照以下定义。注意,我进行了以下更改:

  1. Wrapper
    在您的JSON中添加了与外部对象相对应的类。
  2. 我改变了
    Values
    对财产
    ValueSet
    类从一个
    List<Value>
    Dictionary<string, Value>
    ,因为
    values
    在你的JSON属性包含的对象,而不是一个数组。
  3. 我添加了一些其他
    [JsonProperty]
    属性来匹配JSON对象中的属性名称。

类定义:

class Wrapper{    [JsonProperty("JsonValues")]    public ValueSet ValueSet { get; set; }}class ValueSet{    [JsonProperty("id")]    public string Id { get; set; }    [JsonProperty("values")]    public Dictionary<string, Value> Values { get; set; }}class Value{    [JsonProperty("id")]    public string Id { get; set; }    [JsonProperty("diaplayName")]    public string DisplayName { get; set; }}

您需要反序列化到

Wrapper
类中,而不是在
ValueSet
类中。然后,您可以
ValueSet
从获取
Wrapper

var valueSet = JsonConvert.DeserializeObject<Wrapper>(jsonString).ValueSet;

这是一个工作程序来演示:

class Program{    static void Main(string[] args)    {        string jsonString = @"        { ""JsonValues"": {     ""id"": ""MyID"",     ""values"": {         ""value1"": {  ""id"": ""100"",  ""diaplayName"": ""MyValue1""         },         ""value2"": {  ""id"": ""200"",  ""diaplayName"": ""MyValue2""         }     } }        }";        var valueSet = JsonConvert.DeserializeObject<Wrapper>(jsonString).ValueSet;        Console.WriteLine("id: " + valueSet.Id);        foreach (KeyValuePair<string, Value> kvp in valueSet.Values)        { Console.WriteLine(kvp.Key + " id: " + kvp.Value.Id); Console.WriteLine(kvp.Key + " name: " + kvp.Value.DisplayName);        }    }}

这是输出:

id: MyIDvalue1 id: 100value1 name: MyValue1value2 id: 200value2 name: MyValue2


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5089854.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-16
下一篇2022-11-16

发表评论

登录后才能评论

评论列表(0条)

    保存