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

小编典典

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

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

我Wrapper在您的JSON中添加了与外部对象相对应的类。

我改变了Values对财产ValueSet类从一个List到Dictionary,因为values在你的JSON属性包含的对象,而不是一个数组。

我添加了一些其他[JsonProperty]属性来匹配JSON对象中的属性名称。

类定义:

class Wrapper

{

[JsonProperty("JsonValues")]

public ValueSet ValueSet { get; set; }

}

class ValueSet

{

[JsonProperty("id")]

public string Id { get; set; }

[JsonProperty("values")]

public Dictionary 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(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(jsonString).ValueSet;

Console.WriteLine("id: " + valueSet.Id);

foreach (KeyValuePair kvp in valueSet.Values)

{

Console.WriteLine(kvp.Key + " id: " + kvp.Value.Id);

Console.WriteLine(kvp.Key + " name: " + kvp.Value.DisplayName);

}

}

}

这是输出:

id: MyID

value1 id: 100

value1 name: MyValue1

value2 id: 200

value2 name: MyValue2

2020-07-27

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值