我正在使用JDBC驱动程序和ResultSet读写mysql JSON类型。如何将ResultSet中的JSON类型提取为字符串JSON,以便用于java程序?
mysql> set names UTF8MB4; // so that json values can be inserted using jdbc driver otherwise it was complaining of binary typeJava代码(伪代码):
String myjsonString = "{x: y}"; // assume this is proper
conn.getPreparedStatement("insert into col_json values (myjsonString)");
rs = conn.getStatement("select col_json from table_json_test");
String myorig_json = rs.getString("col_json");myorig_json将以如下字符串的形式出现:
"base64:type15:rO0ABXNyABdqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDTATlwQbMD7AgABWgALYWNjZXNzT3JkZXJ4
cgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4
cD9AAAAAAAAMdwgAAAAQAAAAAXQABXJlZmlkdAAgZWI3ODkzZWVjMDU5NGNhMjlhYjY1OTJjMjFj
MjIwNWZ4AA=="期望是"{x: y}"
发布于 2019-07-12 11:02:47
MySQL中的JSON数据类型是一种特殊类型,在内部存储为二进制对象。这就是为什么不能以字符串的形式从数据库中获取值的原因-- JDBC驱动程序将获取二进制值的内容,并尝试将其作为String读取,从而给出所看到的垃圾。
JDBC驱动程序根本不支持JSON对象类型。相反,您有两个选择:
TEXT字段中-然后可以使用getString读取它,但是您必须自己解析它。ResultSet包含从JSON读取并为您转换的数据。例如,具有以下查询:SELECT col_json->>'$.x' AS x FROM <table>将给您一个ResultSet,其中包含:
+----+
| x |
+----+
| y |
+----+您可以使用resultSet.getString(1)提取值。
关于如何在MySQL中查询JSON字段,有很多教程。这里有一个很简单的开头:http://www.mysqltutorial.org/mysql-json/
https://stackoverflow.com/questions/54179604
复制相似问题