c# - 解析 JSON 时将未定义的数据成员名称放入通用 Diction<string, object> 中

标签 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;
}

如您所见,我没有将“info”或“somethingElse”对象定义为成员。相反,我希望将其放入通用的 AllOthers 字典中

当我打电话时

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

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

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

谢谢

最佳答案

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

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

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

我希望这有帮助!干杯。

关于c# - 解析 JSON 时将未定义的数据成员名称放入通用 Diction<string, object> 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36189977/

相关文章:

c# - Unity JsonUtility无法访问嵌套变量

asp.net-mvc - 在使用 AppFabric 缓存的 MVC SessionState 中使用 WCF DataContract

c# - 我可以从共享接口(interface)继承我的 WCF DataContract 吗?

c# - 我可以在构造函数注释中引用属性注释吗?

c# - 我如何使用 Rhino Mocks 检查传递给方法的值

json - 使用 SwiftyJSON 错误?

wcf - WCF 中 MessageContract 的已知类型

c# - OneDrive 上传程序不适用于教育或工作场所帐户

c# - Html.dropdownlist 不显示下拉字段中的默认/选定值

JavaScript 对象 : Accessing object variables from methods