PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak mogę zweryfikować w Postgresql, czy JSON jest prawidłowy?

To kolejny dobry przykład, dlaczego wybór odpowiedniego typu danych od samego początku pomaga później;)

Nie ma wbudowanej funkcji sprawdzającej, czy dany tekst jest poprawnym JSON. Możesz jednak napisać własny:

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;

Uwaga:ze względu na obsługę wyjątków nie będzie to szybkie. Jeśli nazwiesz to wieloma nieprawidłowymi wartościami, znacznie spowolni to twój wybór.

Jednak oba '{"products": 1}' i '{"products": [1,2,3]}' są poprawnymi dokumentami JSON. Fakt, że pierwsza jest nieprawidłowa, wynika z logiki aplikacji, a nie ze składni JSON.

Aby sprawdzić, czy potrzebujesz podobnej funkcji, która wyłapuje błędy podczas wywoływania 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. Jak pogrupować dzieci i rodziców w jednym zapytaniu?

  2. django - zagregowane klucze specyficzne dla pola json i kolejność według agregacji

  3. Nie mogę zainstalować pg gem w systemie Windows

  4. Jak przekonwertować epokę Uniksa na znacznik czasu?

  5. Nie można uruchomić Postgresa