[JSON插入将自动编码为base64

问题描述 投票:0回答:1

我有一个插入到MySQL数据库中的JSON对象。

ps = con.prepareStatement("INSERT INTO tableA(a, b, c, d_json)" +
                    " VALUES(?,?,?,cast(? AS JSON))", Statement.RETURN_GENERATED_KEYS);
// some code
ps.setObject(4, jsonValue);

我将字符串的哈希图插入为:

    Map<String, String> map = new HashMap<String, String>();
    map.put("key", "value");
    map.put("key1", "value1");
    map.put("key2", "value2");

但是json编码如下:

'“ base64:type15:rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKRvckkACXRocmVz \ naG9sZHhwP0AAAAAAAAx3CAAAABAAABnZhbHVlMXQABGYT1J1A

我想插入一个字符串代替。我在S.O上看到了一些帖子,但没有找到任何适当的方法来修复它。任何帮助,将不胜感激。谢谢!

我有一个插入到MySQL数据库中的JSON对象。 ps = con.prepareStatement(“ INSERT INTO tableA(a,b,c,d_json)” +“ VALUES(?,?,?,cast(?AS JSON))”,Statement ....

java mysql json jdbc base64
1个回答
0
投票

Java Mysql驱动程序不支持Hashmap的自动转换。实际上,如果在setObject中使用未知类型,它将使用默认的Java序列化将其转换为可以处理的类型。数据库接收一个包含序列化HashMap的字节数组。 cast(? as JSON)将其转换为可以存储在BASE64编码的字节数组列中的内容。

© www.soinside.com 2019 - 2024. All rights reserved.