我有这样的 Json 结构:
metadata : {
id : "something",
data : {
1 : {
id : "something",
simple : {
ASD3472GJVMKG : { id : "something", name : "something" },
A892SADKLAWEN : { .. },
KVMSD309234KG : { .. },
2 : { .. },
...
有两个动态生成的属性,它们是data
的属性和simple
的属性。data
的名称属性是增量生成的数字。simple
的名称属性是动态生成的随机字符串。
实际上,我已经使用一种不简单的过程(到处都是foreach和子字符串)对simple
的属性进行了反序列化。顺便说一句,我正在使用 Json.NET 和 C#。我需要对这个糟糕的 Json 结构做什么样的解决方案?我已经看过 JObject 和字典类,但仍然没有得到它来弄清楚。
提前致谢
上面显示的结构不是有效的 JSON。您需要为 JSON.NET 输入生成有效的 JSON,或者专门为此类数据创建一个特殊的解析器。
如果您使用的是有效的 JSON,并且只是事先不知道属性名称,则可以使用以下反序列化方法之一。
- 将对象反序列化为
JObject
而不是更具体的类型。这允许您访问对象的各个属性。 - 将对象反序列化为
Dictionary<string, JObject>
。实际上,这几乎等同于以前的选项。 -
将对象反序列化为包含以下字段的对象。在反序列化期间,未映射到对象模型中其他字段或属性的所有属性都将添加到此字典中。
[JsonExtensionData] private Dictionary<string, JObject> _extensionData;