Denne adfærd er ret irriterende, da JSON-strenge accepteres uden problemer, når de bruges som bogstavelige strenge i SQL-kommandoer.
Der er allerede et problem for dette i postgres driver Github repository (selvom problemet ser ud til at være serversidebehandlingen).
Udover at bruge en cast (se svar fra@a_hest_med_intet_navn) i sql-strengen, tilbyder problemforfatteren to yderligere løsninger:
- Brug en parameter
stringtype=unspecified
i JDBC-forbindelsens URL/indstillinger.
Dette fortæller PostgreSQL, at al tekst eller varchar-parametre faktisk er af ukendt type, hvilket lader den udlede deres typer mere frit.
- Indpak parameteren i et
org.postgresql.util.PGobject
:
PGobject jsonObject = new PGobject();
jsonObject.setType("json");
jsonObject.setValue(yourJsonString);
pstmt.setObject(11, jsonObject);