我需要帮助或一些灵感的一些奇怪的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的字典提示!