【问题标题】:Control characters in resultSet stringresultSet 字符串中的控制字符
【发布时间】:2017-02-06 16:14:35
【问题描述】:

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

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

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

有什么建议吗?

【问题讨论】:

  • 你如何验证它是“正确和干净的”?此外,请显示您用于保存给出该结果的 json 文本的源代码。

标签: java json linux postgresql jdbi


【解决方案1】:

我不知道为什么会发生这种情况,但我已经在单元测试中测试了代码,并在应用程序服务器环境(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解析异常消息进行扩展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2019-12-06
    • 2019-12-10
    相关资源
    最近更新 更多