我需要一些奇怪的 json 反序列化的帮助或灵感。
这是我从服务收到的 json(无法更改,它是外部服务):
{
"status":"OK",
"statuscode":200,
"payload":{
"solarforecast":{
"5876":{
"2014-06-06 23:00:00":{
"bh":0,
"dh":0
},
"2014-06-07 00:00:00":{
"bh":0,
"dh":0
},
[...]
}
}
}
我进行了调用以获取 ID 为 5876 的对象的值。 因此,如果我调用 ID 为 1254 的对象,json 将以这种方式更改:
[...]
"solarforecast":{
"1254":{
"2014-06-06 23:00:00":{
[...]
我现在想在 Newton 的帮助下从这个 json 代码创建一个 c# 对象 ;) 。 我的第一个问题是属性名称(又名对象 ID)对于任何对象调用都是不同的,它是一个数字。 我的第二个问题是未定义计数的子对象。我认为在一个格式良好的 json 对象中,它必须是这样的(参见“[”括号):
"solarforecast":{
"5876":[
"2014-06-06 23:00:00":{
"bh":0,
"dh":0
},
"2014-06-07 00:00:00":{
"bh":0,
"dh":0
},
[...]
]
}
有没有人知道如何将此 json 反序列化为适当的 c# 类的技巧或解决方案? 我试图得到这样的结果:
public class Payload
{
[JsonProperty("solarforecast")]
public SolarForecast SolarForecast;
}
public class SolarForecast
{
[JsonProperty("???")]
public IEnumerable<SolarForecastTimeSet> SomeObjectID;
}
public class SolarForecastTimeSet
{
[JsonProperty("???")]
public decimal TimeStamp;
[JsonProperty("dh")]
public decimal DiffusRadiationHorizontal;
[JsonProperty("bh")]
public decimal DirectRadiationHorizontal;
}
感谢您的帮助!
史蒂芬
最佳答案
好的,知道它是如何工作的! 对象树必须是:
public class Payload
{
[JsonProperty("solarforecast")]
public Dictionary<int, Dictionary<DateTime, SolarForecastTimeSet>> SolarForecast;
}
public class SolarForecastTimeSet
{
[JsonProperty("dh")]
public decimal DiffusRadiationHorizontal;
[JsonProperty("bh")]
public decimal DirectRadiationHorizontal;
}
感谢 @andyp 的字典提示!
关于c# - 格式不太好的json的反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24095634/