将JSON反序列化为带有Childs的C#对象

时间:2018-07-25 11:08:42

标签: c# json json-deserialization

我有一个JSON字符串,我需要一些帮助来反序列化它。 目前,我的结果始终为空。

var results = JsonConvert.DeserializeObject<Root>(json);
// result == null

我的JSON:

{"First":{"FirstData1":{"date":"2018-01-01","hint":""},
"FirstData2":{"date":"2018-01-06","hint":""}},
"Second":{"SecondData1":{"date":"2018-01-01","hint":""},
"SecondData2":{"date":"2018-01-06","hint":""}}}....

只有在最后一个节点上才有实际的属性命名...

MyObjects

public class Root
{
    public IEnumerable<TempModelRoot> Value{ get; set; }
}

public class TempModelRoot
{
    [JsonProperty("Key")]
    public string Key { get; set; }

    [JsonProperty("Value")]
    public List<TempModelChild> Value { get; set; }
}

public class TempModelChild
{
    [JsonProperty("Key")]
    public string Key { get; set; }

    [JsonProperty("Value")]
    public TempModelInfo Value { get; set; }
}


public class TempModelInfo
{
    [JsonProperty("date")]
    public string date { get; set; }

    [JsonProperty("hint")]
    public string hint { get; set; }
}

2 个答案:

答案 0 :(得分:1)

您很可能在尝试反序列化的模型与基于json本身的实际预期模型之间不匹配。

解决此问题的一种简单方法是使用Quick Types Model Generator (未附加功能)之类的工具,该工具可让您根据提供的json文件生成C#模型。

生成后,您可以将模型与生成的模型进行比较和/或替换。 找出并解决模型问题。

答案 1 :(得分:1)

除了@MX D的答案外,我还要添加两个更多有用的模型生成器站点,这些站点将JSON作为输入并提供适当的模型类。

Json2Csahrp

JsonUtils

在难以生成复杂模型类的情况下使用。