sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo puedo insertar un objeto JSON en Postgres usando Java readyStatement?

Este comportamiento es bastante molesto ya que las cadenas JSON se aceptan sin problemas cuando se usan como cadenas literales en los comandos SQL.

Ya existe un problema para esto en el repositorio Github del controlador de postgres (incluso si el problema parece ser el procesamiento del servidor).

Además de usar un molde (ver respuesta de @a_horse_with_no_name) en la cadena sql, el autor del problema ofrece dos soluciones adicionales:

  1. Usar un parámetro stringtype=unspecified en la URL/opciones de conexión de JDBC.

Esto le dice a PostgreSQL que todos los parámetros de texto o varchar son en realidad de tipo desconocido, lo que le permite inferir sus tipos más libremente.

  1. Envuelva el parámetro en un org.postgresql.util.PGobject :

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