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

Как мога да проверя в Postgresql, че JSON е валиден?

Това е още един добър пример защо избирането на подходящия тип данни от самото начало помага по-късно;)

Няма вградена функция за проверка дали даден текст е валиден JSON. Можете обаче да напишете свой собствен:

create or replace function is_valid_json(p_json text)
  returns boolean
as
$$
begin
  return (p_json::json is not null);
exception 
  when others then
     return false;  
end;
$$
language plpgsql
immutable;

Внимание:поради обработката на изключения това няма да бъде бързо. Ако извикате това на много невалидни стойности, това ще забави значително вашия избор.

Въпреки това и двата '{"products": 1}' и '{"products": [1,2,3]}' са валидни JSON документи. Фактът, че първото е невалидно, се основава на логиката на вашето приложение, а не на JSON синтаксиса.

За да проверите дали ще ви трябва подобна функция, която прихваща грешки при извикване на json_array_length()

create or replace function is_valid_json_array(p_json text, p_element text)
  returns boolean
as
$$
begin
  return json_array_length( p_json::json -> p_element) >= 0;
exception 
  when others then
     return false;  
end;
$$
language plpgsql
immutable;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкнете bytea в тип postgresql json

  2. запитване на postgres db с node-postgres

  3. мултипроцесорен модул и отделни psycopg2 връзки

  4. Rake задачите изглежда игнорират конфигурацията на database.yml

  5. Съвпадение на шаблони между множество колони