You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java项目执行Druid REPLACE查询时遭遇JSON解析异常求助

Druid REPLACE查询触发Jackson JsonParseException的解决方法
  • 错误本质:这是请求体的JSON格式非法导致的Jackson解析失败,报错里提到的下划线(_)并非直接问题,而是该位置的JSON结构不符合语法规范(比如缺失逗号、引号未闭合、特殊字符未转义)。

  • 排查与修复步骤:

    1. 定位错误位置:根据报错信息的line: 1, column: 132,找到请求JSON字符串对应位置的内容,检查是否存在:
      • 键值对之间缺失逗号
      • 字符串未正确用引号包裹或引号未闭合
      • SQL查询中的特殊字符(如引号、反斜杠)未转义
    2. 规范构造请求JSON:不要手动拼接JSON字符串,用Java的JSON库(如Jackson ObjectMapper)自动生成合法的请求体,示例代码:
      ObjectMapper mapper = new ObjectMapper();
      Map<String, Object> druidRequest = new HashMap<>();
      druidRequest.put("queryType", "REPLACE");
      druidRequest.put("dataSource", "your_data_source");
      druidRequest.put("intervals", Collections.singletonList("2024-05-01/2024-05-02"));
      // 传入包含REPLACE的SQL查询
      druidRequest.put("query", "SELECT REPLACE(user_name, '_test', '_prod') FROM your_data_source");
      
      String validRequestJson = mapper.writeValueAsString(druidRequest);
      
      这种方式会自动处理字符串转义,避免手动拼接带来的格式错误。
    3. 验证JSON合法性:将生成的请求JSON复制到本地JSON校验工具中,确认没有语法错误后再发送请求。
  • 关键注意事项:Druid的REPLACE查询作为字符串传入时,必须确保它被正确包裹在JSON的对应字段中,且SQL内部的特殊字符(如单引号、双引号)已被转义,否则会破坏整个JSON的结构。

内容的提问来源于stack exchange,提问作者Rushikesh Wakchaure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:00:04