\u0000
là một điểm mã Unicode không hợp lệ trong một chuỗi. Tôi không có cách nào khác hơn là làm sạch chuỗi.
Kể từ khi json
chỉ là một chuỗi ở một định dạng cụ thể, bạn có thể sử dụng các hàm chuỗi tiêu chuẩn mà không cần lo lắng về cấu trúc JSON. Trình vệ sinh một dòng để loại bỏ điểm mã sẽ là:
SELECT (regexp_replace(the_string::text, '\\u0000', '', 'g'))::json;
Nhưng bạn cũng có thể chèn bất kỳ ký tự nào theo ý thích của mình, điều này sẽ hữu ích nếu điểm mã 0 được sử dụng làm một số dạng dấu phân cách.
Cũng cần lưu ý sự khác biệt nhỏ giữa những gì được lưu trữ trong cơ sở dữ liệu và cách nó được trình bày cho người dùng. Bạn có thể lưu trữ điểm mã trong một chuỗi JSON, nhưng bạn phải xử lý trước nó thành một số ký tự khác trước khi xử lý giá trị dưới dạng json
kiểu dữ liệu.