PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment puis-je insérer un objet JSON dans Postgres à l'aide de Java readyStatement ?

Ce comportement est assez ennuyeux car les chaînes JSON sont acceptées sans problème lorsqu'elles sont utilisées comme chaînes littérales dans les commandes SQL.

Il y a déjà un problème pour cela dans le référentiel Github du pilote postgres (même si le problème semble être le traitement côté serveur).

Outre l'utilisation d'un cast (voir la réponse de @a_horse_with_no_name) dans la chaîne sql, l'auteur du problème propose deux solutions supplémentaires :

  1. Utilisez un paramètre stringtype=unspecified dans l'URL/les options de connexion JDBC.

Cela indique à PostgreSQL que tous les paramètres text ou varchar sont en fait de type inconnu, ce qui lui permet de déduire leurs types plus librement.

  1. Enveloppez le paramètre dans un org.postgresql.util.PGobject :

 PGobject jsonObject = new PGobject();
 jsonObject.setType("json");
 jsonObject.setValue(yourJsonString);
 pstmt.setObject(11, jsonObject);