Десериализация массива переменных объектов JSON - PullRequest
1 голос
/ 22 марта 2019

Итак, во-первых, я не могу использовать «динамический», так как в конечном итоге он проходит через транспортер IL2CPP, который не поддерживает динамическую языковую среду выполнения (DLR).

Тем не менее, я пишу клиент, предназначенныйдля использования другими разработчиками, использующими очень общий API, который позволяет, в том числе, определять / обновлять свойства, значением которых может быть любой допустимый тип JSON (строка, число, массив, вложенный объект), а также перечислять все свойства, которыесуществуют и их ценности.Следующие элементы массива могут быть изменены во время выполнения приложения.Я пытаюсь найти наиболее эргономичный способ десериализации чего-то вроде следующего в C #:

[
{
    "_id": "43534253"
    "value": {
        "name": "named thing",
        "address": [
            "Address Line 1",
            "Address Line 2"
        ],
        "location": {
            "lat": 50.123456,
            "long": -78.34
        }
    }
},
{
    "_id": "2345324",
    "value": {
        "a": "hello world",
        "b": 188.40723030755805,
        "c": 260
    }
},
...
]

Для ясности, еще одно ограничение заключается в том, что это не единственные два типа значения для "значения».Этот массив является результатом запроса «всех свойств различного типа, которые вы создали через API, и их значений».Следующим вызовом разработчика может быть создание нового свойства с

value: 0

, которое добавит третий элемент в массив выше со значением, которое является числом.

...