Итак, во-первых, я не могу использовать «динамический», так как в конечном итоге он проходит через транспортер 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
, которое добавит третий элемент в массив выше со значением, которое является числом.