我们在Postgres的文本列中有一个正确且干净的json字符串, 这个字符串是一种很少改变的配置数据。
json字符串是通过jdbi查询从wildfly上的web应用程序中运行的java代码中获取的。
仅在Linux系统上我们在从resultSet读取字符串时会遇到控制字符(?)的存在(使用getString(" param_value"))。 Here从resultSet读取后保存的json文本。
有什么建议吗?
答案 0 :(得分:0)
我不知道为什么会发生这种情况,但我已经在单元测试中测试了代码,并在应用服务器环境中获得了相同的结果(windows ok,linux ko)。此外,postgres jdbc驱动程序和jdbi驱动程序升级后没有任何变化。
作为解决方法以避免解析json时出现问题,执行字符串替换控制字符:
String jsonString = resultSet.getString("param_value")
.replaceAll("[\\x00-\\x1F\\x7F\\x0A\\xfffd\\x20a]","");
控制字符序列最初取自this post,然后根据json解析异常消息进行扩展。