JSON .NET - не десериализовать текущий объект JSON (например, {"name": "value"}) в тип 'System.Collections.Generic.List`1 - PullRequest
0 голосов
/ 15 мая 2019

Я прочитал много тем об этой проблеме, но не смог найти решение. У меня есть 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": {}
}

Я создал класс:

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?

1 Ответ

2 голосов
/ 15 мая 2019

Для вашего конкретного сценария вы можете использовать словарь вместо списка, так как словарь реализует объект и получает пару значений ключа, вы можете иметь динамическое имя свойства и любое нужное вам значение (список строк)

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