首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用空字段c#进行JSON反序列化

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

Stack Overflow用户
提问于 2016-04-21 22:24:26
回答 2查看 960关注 0票数 3

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

代码语言:javascript
复制
{
  "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类中的字段提供了一个不太有用的映射。

代码语言:javascript
复制
public __invalid_type__ __invalid_name__ {get;set;}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-21 22:34:09

反序列化为Dictionary<string, ValidationError>

代码语言:javascript
复制
public class ValidationError
{
    public List<string> reasons { get; set; }
}

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

这将与Javascript序列化程序json.net开箱即用.如果使用的是DataContractJsonSerializer (标记为datacontractjsonserialize序列化),则需要设置DataContractJsonSerializer.UseSimpleDictionaryFormat = true (仅限.Net 4.5及以上)。

票数 3
EN

Stack Overflow用户

发布于 2016-04-21 22:40:30

如果您有自己的类,您可以尝试使用纽顿软-按照JsonPropertyAttribute配置Json属性名称,并将其设置为:

代码语言:javascript
复制
public class YourModel
{
    [JsonProperty(name = "")
    public ValidationErrors { get; set; }
}

这里有更多的例子- 链接

或者,您可以将属性反编码为Dictionary<string, YourErrorObject>,并使用第一个项访问错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36781486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档