如何使用JDBC将JSON字段识别为JSON类型

时间:2019-02-24 00:20:23

标签: json postgresql jdbc

我正在试验对json的Postgres支持,但我不知道是否有办法让JDBC将其标识为json。我不希望结果集能够返回嵌套的Map或类似的东西。我只是在寻找一种从结果元数据或类似内容中分辨出来的方法,它实际上不是文本或字符串字段。

1 个答案:

答案 0 :(得分:1)

Oof,看起来JDBC会告诉您它是一个字符串,即使db中具有JSON列类型也是如此。您可以:

  1. 使用ResultSetMetaData.getColumnTypeName()方法,该方法将返回特定于数据库的类型名称,并指示JSON,hstore,JSONB或将被强制转换为字符串的特定于数据库的任何列类型。

  2. 尝试将其解析为JSON,如果成功则将其视为JSON。显然,这是次优的,因为您不知道列中的每个值是否都是JSON。

  3. 如果直接提取列值,则可以通过使用JDBC连接器查询select * from information_schema.columns where table_name = 'table_name'

  4. 直接从数据库中获取列类型。
  5. 您可以使用JDBC连接器在结果集中添加列pg_typeof("column_name") as column_name_type,例如select *, pg_typeof("column_name") as column_name_type from table_name。如果您的结果集具有计算所得的列,而不是直接从数据库中提取信息,那么这也将起作用。

最后两个对于处理PostgreSQL的hstore或其他通过JDBC传递时被视为字符串的数据类型也很有用。