Мне нужно десериализовать следующую строку JSON.
{"status": "success", "data": [{"id": 4, "domainTitle": "Java","IsDeleted": истинно}, { "ID": 5, "DOMAINTITLE": "РНР", "IsDeleted": истинно}, { "идентификатор": 6, "DOMAINTITLE": "угловой", "IsDeleted": истинно}]}
Тестовый код для того же:
[Test]
public async Task TestGetDeletedDomainsAsync_UserDomains_StatusCodeOK()
{
using (var adminController = new AdminController(_adminService.Object))
{
//act
var response = _adminController.GetDeletedDomainsAsync();
var successStatus = await response.Content.ReadAsAsync<SuccessStatus>();
var returnData = JsonConvert.DeserializeObject<List<Domain>>(successStatus.Data.ToString());
// assert
Assert.Multiple(() =>
{
Assert.That(response, Is.TypeOf<HttpResponseMessage>());
Assert.That(returnData, Is.TypeOf<List<Domain>>());
Assert.AreEqual(response.StatusCode, HttpStatusCode.OK);
Assert.IsNotNull(successStatus);
Assert.AreEqual("success", successStatus.Status);
Assert.IsNotNull(returnData);
//checking if same object goes to service and also if that service is called once
_adminService.Verify(s => s.GetDeletedDomains(), Times.Once);
});
}
}
Но когда я пытаюсь использовать десериализатор, он выдает исключение.
Newtonsoft.Json.JsonSerializationException: Невозможно десериализовать текущий объект JSON (например, {"name": "value"}) в тип 'System.Collections.Generic.List`1 [IMS_NL.Models.Domain] 'потому что для корректной десериализации типу требуется массив JSON (например, [1,2,3]).Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип так, чтобы это был нормальный тип .NET (например, не примитивный тип, например, целое число, а не тип коллекции, например,массив или список), которые можно десериализовать из объекта JSON.JsonObjectAttribute также можно добавить к типу, чтобы принудительно десериализовать его из объекта JSON.
Строка, отображающая вышеуказанную ошибку: -
var returnData = JsonConvert.DeserializeObject<List<Domain>>(successStatus.Data.ToString());
Помогите мне с решением.Заранее спасибо.