格式不太好的json的反序列化

本文关键字:json 反序列化 格式 | 更新日期: 2023-09-27 18:07:06

我需要帮助或一些灵感的一些奇怪的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;
}

谢谢你的帮助!

史蒂芬

格式不太好的json的反序列化

好了,我知道它是怎么工作的了!对象树必须是:

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的字典提示!