Java项目执行Druid REPLACE查询时遭遇JSON解析异常求助
Druid REPLACE查询触发Jackson JsonParseException的解决方法
错误本质:这是请求体的JSON格式非法导致的Jackson解析失败,报错里提到的下划线(
_)并非直接问题,而是该位置的JSON结构不符合语法规范(比如缺失逗号、引号未闭合、特殊字符未转义)。排查与修复步骤:
- 定位错误位置:根据报错信息的
line: 1, column: 132,找到请求JSON字符串对应位置的内容,检查是否存在:- 键值对之间缺失逗号
- 字符串未正确用引号包裹或引号未闭合
- SQL查询中的特殊字符(如引号、反斜杠)未转义
- 规范构造请求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); - 验证JSON合法性:将生成的请求JSON复制到本地JSON校验工具中,确认没有语法错误后再发送请求。
- 定位错误位置:根据报错信息的
关键注意事项:Druid的REPLACE查询作为字符串传入时,必须确保它被正确包裹在JSON的对应字段中,且SQL内部的特殊字符(如单引号、双引号)已被转义,否则会破坏整个JSON的结构。
内容的提问来源于stack exchange,提问作者Rushikesh Wakchaure
相关产品推荐
相关产品推荐

