使用空字段C#进行JSON反序列化 - c#

我正在c#中测试一些api调用,并得到以下JSON响应:

{
  "message": "The request is invalid. Model validation failed.",
  "validationErrors": {
    "": {
      "reasons": [
        "A customer must be added to the order before it can be placed."
      ]
    }
  }
}

我想将此响应映射到带有JSON Deserializer的类,并且无法控制响应的形成方式。如何处理validationErrors中的空字段,以便仍然可以访问对象中的原因列表?

注意:当我通过json2csharp运行它时,它为validationErrors类中的该字段提供了不太有用的映射。

public __invalid_type__ __invalid_name__ {get;set;}

参考方案

反序列化为Dictionary<string, ValidationError>

public class ValidationError
{
    public List<string> reasons { get; set; }
}

public class RootObject
{
    public string message { get; set; }
    public Dictionary<string, ValidationError> validationErrors { get; set; }
}

这将与javascriptserializer和json.net一起使用。如果使用的是DataContractJsonSerializer(标记为datacontractjsonserialize),则需要设置DataContractJsonSerializer.UseSimpleDictionaryFormat = true(仅.Net 4.5及更高版本)。

JSON PATH字段NULL检查表达式 - java

我有一个像bellow的json数组:{ "store": { "book": [ { "category": "reference", "author": "Nigel Rees", "title": "Sa…

json_encode网址失败 - php

有人在this bug附近吗?echo json_encode(array('url'=>'/foo/bar')); {"url":"\/foo\/bar"} 我使用Zend_Json and Zend_Json_Expr以便我甚至可以在js对象中获取回调函数-但我无法获得…

json.dumps弄乱顺序 - python

我正在使用json module创建一个包含类似条目的json文件json.dumps({"fields": { "name": "%s", "city": "%s", "status": "%s", "cou…

JSON SCHEMA PATTERN逗号分隔列表 - python

我的json模式中具有以下模式,并且我需要根据以下模式包含逗号分隔的值。当前模式只能像DV2一样处理一种模式所以我应该如何修改我的模式以包括多个字符串,如下所示,但它应该与声明的模式匹配。例如:“ DV2”,“ DEV1”,“ DEV3”,“ ST”, "ENVIRONMENT": { "type": "st…

JSON.NET如何删除节点 - c#

我有一个像下面这样的json:{ "d": { "results": [ { "__metadata": { }, "prop1": "value1", "prop2": "value2", "__some&#…