首先,我检查了所有旧问题并发现此问题很有用:Reading dynamic attributes of json into .net C#,但对于我而言不是那么有用,我错过了一些不确定的东西!
我正在尝试读取具有嵌套动态属性的动态JSON,这是JSON:
{"data":{"cart":{"seats":{"3B00535EF2414332":{"212":{"6":["22","21"]}}}}}}
请记住,每次获得此JSON时3B00535EF2414332、212和6都是动态的.
在C#中,我不知道应该如何设置属性,因为我需要为类提供具有与对象名称完全相同的属性以反序列化此对象.我虽然想将其解析为C#中的动态对象并尝试调用它,但是仍然不能为我每次唯一的已知值是3B00535EF2414332,但是我不知道其他2个动态属性,我需要检索它们.
我虽然是关于字典的,但是我无法正确地创建它.其实,我不太理解.
谢谢你的时间.
解决方法:
您可以尝试以下方法:
var results = JObject.Parse(json)
["data"]["cart"]["seats"]
.Children<JProperty>().First().Value
.Children<JProperty>().First().Value
.Children<JProperty>().First().Value
.ToObject<int[]>();
编辑:您也可以使用它来检索值以及路径名:
var seats = JObject.Parse(json)["data"]["cart"]["seats"].Children<JProperty>();
var unknown0 = seats.First();
var unknown1 = unknown0.Value.Children<JProperty>().First();
var unknown2 = unknown1.Value.Children<JProperty>().First();
// unknown0.Name -> 3B00535EF2414332
// unknown1.Name -> 212
// unknown2.Name -> 6;
// unknown2.Value.ToObject<int[]>() -> [22,21]