SQLite
 sql >> база данни >  >> RDS >> SQLite

SQLite JSON()

В SQLite, json() функцията преобразува необработен текст, който изглежда като JSON, в действителен JSON.

Ние предаваме JSON низ като аргумент, когато извикаме функцията. json() функцията след това проверява дали аргументът е валиден JSON низ и връща минимизирана версия на този JSON низ. Ако аргументът не е добре оформен JSON низ, тогава се генерира грешка.

Въпреки това, json() функцията не е проектирана да тества дали дадена стойност е валидна JSON. За да направите това, използвайте json_valid() функция вместо това.

Синтаксис

json(X)

Където X е стойността, която трябва да се провери и минимизира.

Пример

SELECT json('{ "a": 1 }');

Резултат:

{"a":1}

В този случай предоставих валиден JSON документ и така беше върната негова намалена версия (ненужните интервали бяха премахнати).

Ето пример, който използва по-голям JSON документ с повече интервали:

SELECT json('{
	"_id": 1.0,
	"title": "Animals",
	"body": "blah blah 1",
	"tags": [
		"cats",
		"dogs"
	]
}');

Резултат:

{"_id":1.0,"title":"Animals","body":"blah blah 1","tags":["cats","dogs"]}

json() функцията може да бъде полезна, когато трябва да предадете JSON на друга функция. Както споменахме, той преобразува необработен текст, който изглежда като JSON, в действителен JSON, което го прави идеален, когато трябва да го предадете на другата функция. След това другата функция ще интерпретира стойността като JSON, а не като низ.

Невалиден JSON

Предаването на невалиден JSON низ води до грешка:

SELECT json('{oops!');

Резултат:

Runtime error: malformed JSON

Дублиращи се етикети

Ако JSON документ съдържа дублиращи се етикети, няма гаранция, че те винаги ще бъдат запазени.

Към момента на писане се запазват дублиращи се етикети. Документацията на SQLite обаче съветва, че това може да се промени в бъдеща версия на SQLite, така че дублиращите се етикети да бъдат премахнати безшумно.

Ето пример, който използва JSON документ с дублиращи се етикети:

SELECT json('{ "a": 1, "b": 1, "a" : 2 }');

Резултат:

{"a":1,"b":1,"a":2}

В този случай моят JSON документ има два етикета, наречени a . И двете бяха запазени в моята инсталация на SQLite (версия 3.38.0), но това може да не е винаги така в бъдещите версии на SQLite.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Първи стъпки с пълнотекстово търсене на SQLite

  2. SQLite IN

  3. SQLite подзаявка

  4. близо до грешка в synatx (код 1) вмъкнете Android SQLite

  5. Вмъкнете JSON данни в базата данни SQLite в android