Десериализовать конкретный объект json в c # dotnet core 2.2 - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь сериализовать необычную структуру json в приложении ac # dotnet core 2.2.

{
    "id": "002a40a1-2e31-4663-a8d0-a4e6e2742d62",
    "data": [
        1,
        [
            "value",
            false
        ]
    ]
}

При попытке смоделировать свойство данных в c #

* возникает путаница.1005 *

Я не знаю, как правильно смоделировать эту структуру в c #, чтобы позволить Newtonsoft ее десериализовать.

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

, поскольку он не имеет структурированного формата, я предлагаю вам использовать dynamic.или Если вы используете object[], вы можете вручную перебирать каждый объект и проверять типы объектов в пределах условия if.

В качестве альтернативы вы можете использовать IDictionary<string, JToken>

public class DataItem {
    [JsonProperty("id")]
    string id;

    [JsonProperty("data")]
    public Dictionary<string, JToken> data;
}
0 голосов
/ 25 февраля 2019

Вам нужно будет использовать JsonExtensionDataAttribute, если вы не знаете, что это за данные во время выполнения.

Таким образом, они будут абстрагировать ваши «данные» в словарь JToken's

public class DataItem {
    [JsonProperty("id")]
    string id;

    [JsonProperty("data")]
    [JsonExtensionData]
    public IDictionary<string, JToken> data;
}

Более подробную информацию вы можете увидеть здесь: https://www.jerriepelser.com/blog/using-jsonextensiondata-with-jsonnet/ и https://www.newtonsoft.com/json/help/html/SerializationAttributes.htm

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