JSON 使用空字段反序列化#
JSON Deserialize with empty field 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 解串器将此响应映射到 class,但我无法控制响应的形成方式。如何处理 validationErrors 中的空字段,以便我仍然可以访问对象中的原因列表?
注意:当我 运行 它通过 json2csharp 时,它在 validationErrors class.
中为该字段提供了这个不太有用的映射
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 and json.net. If you are using DataContractJsonSerializer
(tagged as datacontractjsonserialize) you will need to set DataContractJsonSerializer.UseSimpleDictionaryFormat = true
开箱即用(仅限 .Net 4.5 及更高版本)。
如果您有自己的 class,您正在尝试取消实现,您可以尝试使用 Newtonsoft-Json 通过 [=] 配置您的 Json 属性 名称11=] 并将其设置为:
public class YourModel
{
[JsonProperty(name = "")
public ValidationErrors { get; set; }
}
此处有更多示例 - link
或者,您可以将 属性 解序列化为 Dictionary<string, YourErrorObject>
并使用第一个项目来访问错误。
我正在用 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 解串器将此响应映射到 class,但我无法控制响应的形成方式。如何处理 validationErrors 中的空字段,以便我仍然可以访问对象中的原因列表?
注意:当我 运行 它通过 json2csharp 时,它在 validationErrors class.
中为该字段提供了这个不太有用的映射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 and json.net. If you are using DataContractJsonSerializer
(tagged as datacontractjsonserialize) you will need to set DataContractJsonSerializer.UseSimpleDictionaryFormat = true
开箱即用(仅限 .Net 4.5 及更高版本)。
如果您有自己的 class,您正在尝试取消实现,您可以尝试使用 Newtonsoft-Json 通过 [=] 配置您的 Json 属性 名称11=] 并将其设置为:
public class YourModel
{
[JsonProperty(name = "")
public ValidationErrors { get; set; }
}
此处有更多示例 - link
或者,您可以将 属性 解序列化为 Dictionary<string, YourErrorObject>
并使用第一个项目来访问错误。