Почему этот анонимный тип с несколькими свойствами не десериализуется должным образом с помощью JsonConvert.DeserializeAnonymousType?

Я задавал этот вопрос ранее, и теперь у меня проблемы с другой подобной строкой JSON.

Вот моя строка JSON:

{"responseObject":{"code":"0","message":"HI","url":"www.abc.com","token":"{\"token\":\"abcdef\",\"id\":123}"}}

Вот мой код для десериализации, который не работает:

var def = new
        {
            code = string.Empty,
            message = string.Empty,
            url= string.Empty,
            token = new {token = string.Empty}
        };

        var response = JsonConvert.DeserializeAnonymousType(data, def);

        var innerDef = new { token= string.Empty, id= string.Empty };

        var deserializedInner = JsonConvert.DeserializeAnonymousType(response.token.token, innerDef);

2 ответа

Решение

У вас было две основные проблемы:

  1. Вы не брали responseObject в учетную запись.
  2. Вы дали внешнее token неправильный тип. Это строка, содержащая JSON, а не объект.

Это работает:

var def = new
{
    responseObject = new
        {
            code = string.Empty,
            message = string.Empty,
            url = string.Empty,
            token = string.Empty
        }
};

var response = JsonConvert.DeserializeAnonymousType(data, def);

var innerDef = new { token = string.Empty, id = string.Empty };

var deserializedInner = 
  JsonConvert.DeserializeAnonymousType(response.responseObject.token, innerDef);

Токен - это строка, а не объект. "фишка":"

Другие вопросы по тегам