\u0000
jest jednym punktem kodu Unicode, który nie jest prawidłowy w ciągu. Nie widzę innego sposobu niż zdezynfekowanie łańcucha.
Od json
jest tylko ciągiem w określonym formacie, możesz użyć standardowych funkcji ciągów, nie martwiąc się o strukturę JSON. Jednowierszowy środek dezynfekujący do usunięcia punktu kodowego to:
SELECT (regexp_replace(the_string::text, '\\u0000', '', 'g'))::json;
Ale możesz także wstawić dowolny znak, który Ci się podoba, co byłoby przydatne, jeśli punkt zerowy jest używany jako pewna forma ogranicznika.
Zwróć także uwagę na subtelną różnicę między tym, co jest przechowywane w bazie danych, a tym, jak jest to prezentowane użytkownikowi. Możesz przechowywać punkt kodu w ciągu JSON, ale musisz go wstępnie przetworzyć na inny znak przed przetworzeniem wartości jako json
typ danych.