PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để xác minh trong Postgresql rằng JSON hợp lệ?

Đây là một ví dụ điển hình khác tại sao việc chọn kiểu dữ liệu thích hợp ngay từ đầu sẽ giúp ích cho sau này;)

Không có chức năng tích hợp nào để kiểm tra xem một văn bản nhất định có phải là JSON hợp lệ hay không. Tuy nhiên, bạn có thể viết của riêng bạn:

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;

Thận trọng:do xử lý ngoại lệ, việc này sẽ không nhanh. Nếu bạn gọi như vậy trên nhiều giá trị không hợp lệ, điều này sẽ làm chậm quá trình lựa chọn của bạn một cách ồ ạt.

Tuy nhiên, cả '{"products": 1}''{"products": [1,2,3]}' là các tài liệu JSON hợp lệ. Thực tế là cái trước là không hợp lệ dựa trên logic ứng dụng của bạn, không phải trên cú pháp JSON.

Để xác minh rằng bạn sẽ cần một hàm tương tự, hàm đó sẽ mắc lỗi khi gọi 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. Cách thiết lập psycopg2 với cơ sở dữ liệu PostgreSQL của Google App Engine

  2. Trả về bản ghi setof (bảng ảo) từ hàm

  3. Chọn tên và giá trị cột từ bảng

  4. Làm cách nào để tìm giá trị lớn nhất trong một cột trong sql postgres?

  5. Di chuyển Rails + Postgres - tại sao tôi nhận được lỗi PG ::UndefinedFunction:ERROR:function gen_random_uuid () không tồn tại?