栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何将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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427570.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号