我正在 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; }
}
这将开箱即用地与javascriptserializer一起使用和 json.net 。如果您使用 DataContractJsonSerializer
(标记为 datacontractjsonserialize )您需要设置 DataContractJsonSerializer.UseSimpleDictionaryFormat = true
(仅限 .Net 4.5 及更高版本)。
关于c# - 使用空字段 C# 进行 JSON 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781486/