【发布时间】:2018-11-06 13:07:52
【问题描述】:
我在让 JsonConvert.DeserializeObject 与对象名称是动态的一些 JSON 一起工作时遇到了一些问题,这使得反序列化为 C# 对象变得困难。这就是我通常会做的事情——这对于具有可预测架构的 JSON 非常有效:
var dynData = (MyType)JsonConvert.DeserializeObject(jsonString, typeof(MyType));
传入的 JSON 如下所示,注意对象名称“2000314370”是动态的,不会每次都相同。 JSON 由第 3 方提供,因此我无法控制它。
{
"status":"ok",
"meta":{"count":1},
"data":{
"2000314370":[
{"all": {"f1":972,"f2":0,"f3":0.09}}
]
}
}
使用http://jsonutils.com/,我生成了它认为正确的类结构,但它当然包含对动态对象的引用:
public class 2000314370
{
public All all { get; set; }
}
public class Data
{
public IList<2000314370> 2000314370 { get; set; }
}
我是否能够声明类并将动态 JSON 反序列化为它,还是必须使用不同的方法?
【问题讨论】:
-
将数据属性更改为字符串和包含类型的字典
-
这是一个非常有趣的方法:stackoverflow.com/questions/3142495/…
标签: c# json json.net json-deserialization