控制resultSet字符串中的字符

时间:2017-02-06 16:14:35

标签: java json linux postgresql jdbi

我们在Postgres的文本列中有一个正确且干净的json字符串, 这个字符串是一种很少改变的配置数据。

json字符串是通过jdbi查询从wildfly上的web应用程序中运行的java代码中获取的。

仅在Linux系统上我们在从resultSet读取字符串时会遇到控制字符(?)的存在(使用getString(" param_value"))。 Here从resultSet读取后保存的json文本。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我不知道为什么会发生这种情况,但我已经在单元测试中测试了代码,并在应用服务器环境中获得了相同的结果(windows ok,linux ko)。此外,postgres jdbc驱动程序和jdbi驱动程序升级后没有任何变化。

作为解决方法以避免解析json时出现问题,执行字符串替换控制字符:

String jsonString = resultSet.getString("param_value")
                      .replaceAll("[\\x00-\\x1F\‌​\x7F\\x0A\\xfffd\\x2‌​0a]","");

控制字符序列最初取自this post,然后根据json解析异常消息进行扩展。