使用动态名称反序列化对象[Json.net]

时间:2016-10-03 01:39:43

标签: c# json

亲爱的 我有一个带格式行的json字符串

  "rain":{"3h":0.46}

在这种情况下,'rain'有'3h'对象,但是这个名字是动态的,所以我不能用JsonConvert反序列化它,那么在类中用这个名字定义什么?

Json2Csharp给我这个代码

    public class Rain
{
    public double __invalid_name__3h { get; set; }
}

1 个答案:

答案 0 :(得分:2)

javascript(以及JSON)中的对象只是字典。由于您不知道属性名称(更重要的是,因为它以C#中禁止的数字开头),您只需使用字典:

public class MyThing 
{
    public Dictionary<string, double> rain { get; set; }
}

但是,您的JSON不完整。它应该是:

{"rain":{"3h":0.46}}

全力以赴:

void Main()
{
    var json =  @"{""rain"":{""3h"":0.46}}";
    var result = JsonConvert.DeserializeObject<MyThing>(json);
}

public class MyThing
{
    public Dictionary<string, double> rain { get; set; }
}