我正在试验对json的Postgres支持,但我不知道是否有办法让JDBC将其标识为json。我不希望结果集能够返回嵌套的Map
或类似的东西。我只是在寻找一种从结果元数据或类似内容中分辨出来的方法,它实际上不是文本或字符串字段。
答案 0 :(得分:1)
Oof,看起来JDBC会告诉您它是一个字符串,即使db中具有JSON列类型也是如此。您可以:
使用ResultSetMetaData.getColumnTypeName()
方法,该方法将返回特定于数据库的类型名称,并指示JSON,hstore,JSONB或将被强制转换为字符串的特定于数据库的任何列类型。
尝试将其解析为JSON,如果成功则将其视为JSON。显然,这是次优的,因为您不知道列中的每个值是否都是JSON。
如果直接提取列值,则可以通过使用JDBC连接器查询select * from information_schema.columns where table_name = 'table_name'
您可以使用JDBC连接器在结果集中添加列pg_typeof("column_name") as column_name_type
,例如select *, pg_typeof("column_name") as column_name_type from table_name
。如果您的结果集具有计算所得的列,而不是直接从数据库中提取信息,那么这也将起作用。
最后两个对于处理PostgreSQL的hstore或其他通过JDBC传递时被视为字符串的数据类型也很有用。