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