Динамическая десериализация JSON из вызова API - PullRequest
0 голосов
/ 03 февраля 2020

API-вызов, который я использую, возвращает JSON, аналогичный приведенному ниже

{
    "d": {
        "results": [
            {
                "Id": "Test01",
                "Version": ""

            }
        ],
        "count": 0
    }
}

Есть ли в любом случае, я могу десериализовать это динамически или я должен создать классы POCO для этого?

1 Ответ

2 голосов
/ 03 февраля 2020

По вашему вопросу, я использую библиотеку Newtonsoft JSON, которая является популярной высокопроизводительной структурой JSON для. NET.

Вы можете go в обоих направлениях здесь, чтобы десериализовать вашу JSON строку:

1) Использование классов POCO для вашей JSON строки:

public class Result
{
    public string Id { get; set; }
    public string Version { get; set; }
}

public class D
{
    public List<Result> results { get; set; }
    public int count { get; set; }
}

public class RootObject
{
    public D d { get; set; }
}

Для десериализации:

var Sresponse = JsonConvert.DeserializeObject<RootObject>(json);

ИЛИ

2) Вы можете использовать dynamic, если не хотите использовать POCO классы:

var dynamicresponse = JsonConvert.DeserializeObject<dynamic>(json);

Вывод:

Id: Test01
Version: 
Count: 0

Рабочий пример, иллюстрирующий оба случая, можно найти здесь :

...