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

标签 c# json deserialization json-deserialization

我正在 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 反序列化器的类,但我无法控制响应的形成方式。如何处理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; }
}

这将开箱即用地与一起使用和 。如果您使用 DataContractJsonSerializer (标记为 )您需要设置 DataContractJsonSerializer.UseSimpleDictionaryFormat = true (仅限 .Net 4.5 及更高版本)。

关于c# - 使用空字段 C# 进行 JSON 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781486/

相关文章:

javascript - 使用来自 JS xamarin 的参数调用 C# 方法

javascript - 为什么 JSON.parse() 不能解析 date.toJSON() 创建的内容?

c# - 从 IEnumerable foreach 循环中获取值

java - Gson 反序列化到 java 对象不起作用

java - 使用 GSON 反序列化泛型类型

c# - 如何根据Json反序列化JArray数据创建DataTable?

c# - 尝试输出 unicode 拉丁十字字符(十六进制 : 271D) in C#

c# - 比赛中的比赛

json - 如何在 Node.js 中解析包含 "NaN"的 JSON 字符串

c# - 防止在多对多表上按约定创建索引