Десериализовать JSON из нескольких объектов в список объектов - PullRequest
0 голосов
/ 10 июля 2019

Невозможно создать объект сопоставления / модель ответа для полученного ответа JSON от службы.

Попытка создания пользовательского JsonConverter, но не удалось найти подходящий метод, который может помочь решить проблему десериализации

Ниже приведен ответ JSON, который я получаю от службы.

{
    "$base": "Collection",
    "nodeType": "PROTOCOL",
    "Smart Building 0": {
        "$base": "Collection",
        "nodeType": "NETWORK",
        "truncated": "true"
    },
    "Smart Building 1": {
        "$base": "Collection",
        "nodeType": "NETWORK",
        "truncated": "true"
    },
    "Smart Building 2": {
        "$base": "Collection",
        "nodeType": "NETWORK",
        "truncated": "true"
    }
}

Пример 1: - та же служба может возвращать формат ниже JSON

{
    "$base": "Collection",
    "nodeType": "PROTOCOL",
    "Smart Building 0": {
        "$base": "Collection",
        "nodeType": "NETWORK",
        "truncated": "true"
    },
    "Smart Building 1": {
        "$base": "Collection",
        "nodeType": "NETWORK",
        "truncated": "true"
    }
}

Создать класс корневого объекта c #так что его можно легко использовать для десериализации с помощью JsonConvert

1 Ответ

0 голосов
/ 11 июля 2019

Попробуйте это:

public class Root : Dictionary<string, Building>
{   
    [JsonProperty("$base")]
    public string Base { get; set; }

    [JsonProperty("nodeType")]
    public string NodeType { get; set; }
}

public class Building
{
    [JsonProperty("$base")]
    public string Base { get; set; }

    [JsonProperty("nodeType")]
    public string NodeType { get; set; }

    [JsonProperty("truncated")]
    public string Truncated { get; set; }
}
...