JSON .NET - 不将当前 JSON object(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1
JSON .NET - annot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1
我阅读了很多有关此问题的主题,但找不到解决方案。我有 JSON 由 AP
返回
{
"Version": "XXX",
"StatusCode": 400,
"RequestId": "XXX",
"Success": false,
"ValidationMessages": {
"SomeTable[0].PropName": [
"This field is invalid"
],
"SomeTable[1].PropName": [
"This field is invalid"
],
"SomeTable[0].OtherProp": [
"This field is invalid"
]
},
"Result": {}
}
我创建了 class:
public class MyResponse
{
public string Version { get; set; }
public string StatusCode { get; set; }
public string RequestId { get; set; }
public bool Success { get; set; }
public SomeResult Result { get; set; }
public List<KeyValuePair<string, List<string>>> ValidationMessages { get; set; }
}
当我尝试反序列化 JSON 时,我收到标题错误。如何实现动态ValidationMessages的序列化?
对于您的特定场景,您可以使用字典而不是列表,因为字典实现了一个对象并接收一个键值对,您可以拥有一个动态的 属性 名称和您需要的任何值(字符串列表)
public class MyResponse
{
public string Version { get; set; }
public string StatusCode { get; set; }
public string RequestId { get; set; }
public bool Success { get; set; }
public SomeResult Result { get; set; }
public Dictionary<string, List<string>> ValidationMessages {get;set;}
}
我阅读了很多有关此问题的主题,但找不到解决方案。我有 JSON 由 AP
返回{
"Version": "XXX",
"StatusCode": 400,
"RequestId": "XXX",
"Success": false,
"ValidationMessages": {
"SomeTable[0].PropName": [
"This field is invalid"
],
"SomeTable[1].PropName": [
"This field is invalid"
],
"SomeTable[0].OtherProp": [
"This field is invalid"
]
},
"Result": {}
}
我创建了 class:
public class MyResponse
{
public string Version { get; set; }
public string StatusCode { get; set; }
public string RequestId { get; set; }
public bool Success { get; set; }
public SomeResult Result { get; set; }
public List<KeyValuePair<string, List<string>>> ValidationMessages { get; set; }
}
当我尝试反序列化 JSON 时,我收到标题错误。如何实现动态ValidationMessages的序列化?
对于您的特定场景,您可以使用字典而不是列表,因为字典实现了一个对象并接收一个键值对,您可以拥有一个动态的 属性 名称和您需要的任何值(字符串列表)
public class MyResponse
{
public string Version { get; set; }
public string StatusCode { get; set; }
public string RequestId { get; set; }
public bool Success { get; set; }
public SomeResult Result { get; set; }
public Dictionary<string, List<string>> ValidationMessages {get;set;}
}