Извините за возможное запутанное название. Я новичок в JSON, и я работаю над веб-приложением с помощью программного обеспечения, которое взаимодействует с API. У меня есть контроль над обоими.Deserialize JSON для массива объектов, а не одного списка объектов
Моим приложениям необходимо перечислить список «Клиенты» и их «Проекты». В настоящее время она возвращает следующее:
{
"clients": [
{
"client_id": "1",
"client_name": "Client1",
"projects": [
{
"client_project_id": "1",
"client_project_title": "WidgetsA",
"client_project_client": "1",
"client_project_status": "1"
},
{
"client_project_id": "11",
"client_project_title": "WidgetsB",
"client_project_client": "1",
"client_project_status": "1"
}
]
},
{
"client_id": "11",
"client_name": "Client11",
"projects": [
{
"client_project_id": "31",
"client_project_title": "Install",
"client_project_client": "11",
"client_project_status": "1"
}
]
},
{
"client_id": "21",
"client_name": "Client21",
"projects": [
{
"client_project_id": "61",
"client_project_title": "Marketing",
"client_project_client": "21",
"client_project_status": "1"
}
]
},
{
"client_id": "31",
"client_name": "Client31",
"projects": [
{
"client_project_id": "71",
"client_project_title": "Fire Everyone",
"client_project_client": "31",
"client_project_status": "1"
},
{
"client_project_id": "81",
"client_project_title": "Buy A Company",
"client_project_client": "31",
"client_project_status": "1"
}
]
}
]
}
Я десериализация это достаточно легко объект, используя следующий код: Json.NET
MyObject result = JsonConvert.DeserializeObject<MyObject>(response);
Однако, это работает только, если мои объекты выглядят так:
[Serializable, JsonObject]
internal class MyObject
{
[JsonProperty("clients")]
internal List<ClientObject> ClientList = new List<ClientList>();
}
internal class ClientObject
{
[JsonProperty("client_id")]internal string ClientID { get; set; }
[JsonProperty("client_name")] internal string ClientName { get; set; }
[JsonProperty("projects")] internal List<ProjectObject> ProjectList = new List<ProjectObject>();
}
(NB: Я изменил имена многих свойств и объектов для обеспечения конфиденциальности, поэтому приносим извинения за любые ошибки, добавлены)
То, что я действительно хочу, чтобы быть в состоянии сделать, это использовать следующий код:
List<ClientObject> result = JsonConvert.DeserializeObject<List<ClientObject>>(response);
Но независимо от того, как я форматировать ответ JSON, JSON.NET выдает ошибку о том, что JSON не является массивом. Может ли кто-нибудь посоветовать, где я ошибаюсь, или что я недопонимаю?
строки JSON не является массивом. –
Ваш формат json является «объектным» форматом - '{" clientList ": [{client1properties}, {client2properties}]}'. Вам нужно изменить, чтобы возвращенный json был форматом коллекции '[{client1properties}, {client2properties}]' – Fabio