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;}
}