小编fPe*_*ecc的帖子

如何在C#中使用动态和静态键名反序列化JSON

我必须反序列化具有以下结构的api的响应:

[
  {
    "starttime": "...",
    "endtime": "....",
    "var1": {},
    "var2": {}
  },
  {
    "starttime": "...",
    "endtime": "....",
    "var1": {},
    "var3": {}
  },
  {
    "starttime": "...",
    "endtime": "....",
    "var1": {}
  }
] 
Run Code Online (Sandbox Code Playgroud)

一些见解:

  • JSON是一个对象数组
  • 数组中的每个对象将始终具有“ starttime”和“ endtime”属性
  • 对象“ var1”,“ var2”,“ var3”内部始终具有相同的属性……但是问题是对象键(var1,var2或var3)是动态的。它可以是任何字符串,并且此类对象的数量是动态的(我可以有3个或零个“ var”对象)。

我在想这样的事情,将JSON字符串反序列化为具有属性“ starttime”,“ endtime”的对象列表以及包含所有“ var”对象的字典。

public class MyResponse
{
    [JsonProperty(PropertyName = "starttime")]
    public string StartTime { get; set; }
    [JsonProperty(PropertyName = "endtime")]
    public string EndTime { get; set; }
    public Dictionary<string, VarObject> VarData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是VarData属性始终为null。

有没有人尝试过这样的事情?

c# serialization json.net deserialization

5
推荐指数
1
解决办法
80
查看次数

标签 统计

c# ×1

deserialization ×1

json.net ×1

serialization ×1