sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan kan jeg verificere i Postgresql, at JSON er gyldig?

Dette er endnu et godt eksempel på, hvorfor det hjælper senere at vælge den passende datatype lige fra starten;)

Der er ingen indbygget funktion til at kontrollere, om en given tekst er gyldig JSON. Du kan dog skrive din egen:

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;

Forsigtig:På grund af undtagelseshåndteringen vil dette ikke være hurtigt. Hvis du kalder det på mange ugyldige værdier, vil dette bremse dit valg enormt.

Men begge '{"products": 1}' og '{"products": [1,2,3]}' er gyldige JSON-dokumenter. Det faktum, at førstnævnte er ugyldig, er baseret på din applikationslogik, ikke på JSON-syntaksen.

For at bekræfte, at du har brug for en lignende funktion, som fanger fejl, når du kalder 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. PostgreSQL Sqlalchemy commit tager meget tid

  2. PostgreSQL CSV import fra kommandolinjen

  3. Kolonne ikke tilladt fejl under indsættelse af rækker ved hjælp af sekvensværdier

  4. Sammenkædning af django- og mysql-containere ved hjælp af docker-compose