\u0000
er det ene Unicode-kodepunkt, som ikke er gyldigt i en streng. Jeg ser ingen anden udvej end at rense snoren.
Siden json
kun er en streng i et bestemt format, kan du bruge standard strengfunktionerne uden at bekymre dig om JSON-strukturen. Et desinficeringsmiddel på én linje til at fjerne kodepunktet ville være:
SELECT (regexp_replace(the_string::text, '\\u0000', '', 'g'))::json;
Men du kan også indsætte et hvilket som helst tegn efter din smag, hvilket ville være nyttigt, hvis nulkodepunktet bruges som en form for afgrænsning.
Bemærk også den subtile forskel mellem, hvad der er gemt i databasen, og hvordan det præsenteres for brugeren. Du kan gemme kodepunktet i en JSON-streng, men du skal forbehandle det til et andet tegn, før du behandler værdien som en json
datatype.