Detta beteende är ganska irriterande eftersom JSON-strängar accepteras utan problem när de används som bokstavliga strängar i SQL-kommandon.
Det finns redan ett problem för detta i postgres drivrutin Github-förvaret (även om problemet verkar vara bearbetningen på serversidan).
Förutom att använda en cast (se svaret av@a_häst_med_inget_namn) i sql-strängen, erbjuder problemförfattaren två ytterligare lösningar:
- Använd en parameter
stringtype=unspecified
i JDBC-anslutningsadressen/alternativen.
Detta talar om för PostgreSQL att all text eller varchar-parametrar faktiskt är av okänd typ, vilket gör att den kan härleda deras typer mer fritt.
- Sätt in parametern i ett
org.postgresql.util.PGobject
:
PGobject jsonObject = new PGobject();
jsonObject.setType("json");
jsonObject.setValue(yourJsonString);
pstmt.setObject(11, jsonObject);