Json десериализация не удалась - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь десериализовать строку JSON для объекта.

Выдается исключение:

Невозможно привести объект типа 'Newtonsoft. Json .Linq.JObject 'для ввода' APIServer.Models.UserProfileModel '.

Это строка JSON:

"id": "b483c490-8d5a-4247-b3d3-8eb7cc4208bd",
"firstName": "Jeremy",
"lastName": "Krasin",
"gender": null,
"birthDate": null,
"homeCountry": null,
"publicName": null,
"self": {
    "href": "http://localhost:54253/api/userprofiles/b483c490-8d5a-4247-b3d3-8eb7cc4208bd",
    "relations": [
        "collections"
    ],
    "method": "GET",
    "routeName": null,
    "routeValues": null
},
"href": "http://localhost:54253/api/userprofiles/b483c490-8d5a-4247-b3d3-8eb7cc4208bd",
"relations": [
    "collections"
],
"method": "GET",
"routeName": null,
"routeValues": null

Это класс, который я пытаюсь десериализовать into:

public class UserProfileModel : BaseModel<UserProfileModel> {

    public Guid Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string Gender { get; set; }

    public string BirthDate { get; set; }

    public string HomeCountry { get; set; }

    public string PublicName { get; set; }

    public string City { get; set; }

    public string State { get; set; }

    public string PostalCode { get; set; }
}

Это строка кода, которая пытается десериализоваться:

return (T) JsonConvert.DeserializeObject(RestClient.Execute(aRequest).Content);

Я проверил, что T имеет следующий тип:

APIServer.Models.UserProfileModel

Что я делаю не так?

1 Ответ

2 голосов
/ 28 марта 2020

Вам необходимо указать тип при вызове DeserializeObject следующим образом:

return JsonConvert.DeserializeObject<T>(RestClient.Execute(aRequest).Content);
                                    ^^^

Если вы не укажете тип, DeserializeObject вернет JObject, который не может быть приведен к ваш APIServer.Models.UserProfileModel. Вот почему вы получаете ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...