在解析JSON时将未定义的数据成员名称放入通用Diction <string,object =“”>

时间:2016-03-23 22:32:40

标签: c# json datacontract

我有这个JSON(实际上是Swagger):

{
  "swagger": "2.0",
  "info": {
    "version": "2.0",
    "name": "TheName",
    "description": "No description"
  }
  "somethingElse" : "xyz"
}

我正在使用Newtonsoft.JSON。我定义了我的对象:

public class WebService
{
    public string swagger;
    public Dictionary<string, object> AllOthers;
}

正如您所看到的,我没有定义&#34; info&#34;或&#34; somethingElse&#34;对象作为成员。相反,我希望将其放入通用的AllOthers字典

当我打电话

var ws = Newtonsoft.Json.JsonConvert.DeserializeObject<WebService>(swaggerJSON);

ws现在将正确包含swagger版本号字符串,但AllOthers将包含null。我希望AllOthers包含名称和描述的entires,以及存储在通用对象中的有效负载。

这是如何实现的,还是不容易实现?

由于

1 个答案:

答案 0 :(得分:2)

[JsonExtensionData]有一个属性。使用以下属性标记您的字典:

public class WebService
{
  public string swagger;
  [JsonExtensionData]
  public Dictionary<string, object> AllOthers;
}

var ws = Newtonsoft.Json.JsonConvert.DeserializeObject<WebService>(json);

我希望这有帮助!欢呼声。