Сохранить JSON в поле sqlite? - PullRequest
6 голосов
/ 29 июня 2011

Я пишу приложение, которое взаимодействует с веб-API, которое отвечает JSON. В настоящее время я транслирую объекты JSON в объекты Java, используя gson (что, кстати, здорово).

Теперь я хочу сохранить некоторые из этих объектов в базе данных SQLite. Тем не менее, они имеют много свойств, которые никогда не будут использоваться в запросах (то есть я не буду ORDER ing, WHERE ing или что-то подобное с этими свойствами), поэтому я чувствую, что нет необходимости создавать столбцы для всех из них. То, о чем я думаю, это:

  • Только столбцы для основных данных, которые будут использоваться при запросе к базе данных
  • Имеется один столбец TEXT или BLOB (какой вы рекомендуете?), В котором хранится фактический JSON, чтобы я мог воссоздать из него мой Java-объект и получить доступ ко всем данным.

Это и облегчит мою жизнь, и упростит мой код (мне не нужно было бы писать очень другой код при работе с данными из API и данными из базы данных).

Однако, хотя я не вижу недостатков, это выглядит немного подозрительно.

Как вы думаете, с какими проблемами я столкнусь, если использую эту технику?

1 Ответ

3 голосов
/ 29 июня 2011

Главное, что мне не понравилось бы в этом, - это полагать, что структура сохраненного / извлеченного JSON является действительной, поскольку она полностью находится в руках базы данных.Не то чтобы вы не могли принять меры предосторожности против возможных проблем, но если JSON каким-то образом обрезан или иным образом скомпрометирован таким образом, что отключает синтаксический анализатор, тогда вы пропускаете весь объект вместо одного недопустимого или усеченного свойства.Если это приемлемый риск, то это, вероятно, разумный метод.

...