我需要一些奇怪的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":{
[...]
我现在想在牛顿的帮助下从这个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;
}
感谢您的帮助!!
斯特芬
答案 0 :(得分:1)
好的,弄清楚它是如何运作的! 对象树必须是:
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 提供他的字典提示!