У меня есть координаты, которые я читаю у MongoDB с помощью драйвера 10Gen. Проблема, с которой я сталкиваюсь, заключается в том, что глубина многомерных данных несовместима, и я ищу всеобъемлющую стратегию для решения этой проблемы.Как сериализовать многоразмерную массив JSON из MongoDB
Решение должно иметь возможность записать координаты обратно в MongoDB (сериализовать) в том же порядке и глубине, что и считывание (десериализация).
Два примера различной глубины:
Пример 1
[
[ [ [ 12, 33 ], [ 32, 23 ], [ 12, 32], [23, 12 ], [ 32, 32 ], [ 32, 2 ] ] ],
[ [ [35, 12 ], [ 53, 16 ], [ 22, 54 ], [ 2, 32 ], [ 32, 32 ] ] ]
]
Deserialize в:
public List<List<List<int>>> coordinates { get; set; }
Пример 2
[
[ [ 2, 2 ], [120,12 ], [ 32,32 ], [ 32, 2 ], [ 3,2 ], [ 2, 3 ], [ 2, 1 ] ]
]
Deserialize в:
public List<List<List<List<int>>>> coordinates { get; set; }
Моя первая мысль была написать собственный сериалайзер для чтения данных и выяснить глубину, а затем использовать метод обертки, чтобы скрыть фактические данные с точки зрения, например, GetNextCoordinate(), а затем функция GetNextCoordinate может вытащить данные из соответствующей структуры. Это кажется грязным, поэтому я ищу более общее решение.
Предположим, что свойство координат является частью конкретного класса и что коллекция в MongoDB содержит сочетание обоих типов координатных документов. Значение любого заданного запроса для MongoDB приведет к тому, что оба документа координируют оба или оба типа, и я не знаю перед выполнением запроса.
Я не знаю, в чем проблема, которую вы там решаете, но для меня это не выглядит чистым. Если у вас есть списки списков, разве в данных нет какой-либо семантики? Нет ли способа убедиться, что каждый объект db имеет список координат и некоторые поля, которые можно использовать для поиска? – mnemosyn
Согласен, однако источник данных находится вне моего контроля. – user2532019