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

WebClient发送JSON请求体时换行符转义异常问题排查

GraphQL请求体换行符转义问题解决

这不是WebClient的Bug,核心是JSON序列化的转义逻辑没处理到位:

  • 代码里写"\n"时,这是Java的实际换行符,JSON序列化器会将其转为JSON标准的换行表示(即请求体里的\n),wiretap日志显示的\n是正常的转义后内容,并非未转义
  • 写"\\n"时,Java字符串里存储的是转义后的\n字符,JSON序列化器会再次转义,导致最终请求体出现\\\n(日志里显示为\\\\n是因为日志输出时又做了一次转义)

解决步骤

  • 直接使用实际换行符:在需要添加换行的字符串里直接写"\n",比如String text = "line1\nline2",让默认的Jackson序列化器自动处理转义,最终请求体里会正确出现\n
  • 禁止手动转义:不要自行把字符串转成"\\n",否则会触发JSON序列化的二次转义
  • 检查GraphQL客户端序列化配置:如果你用的WebClientGraphQLClient自定义了JSON序列化器,确认其是否开启了正确的转义规则,确保换行符被正常处理

代码示例(变量构建部分)

// 正确构建带换行的GraphQL变量
String targetContent = "第一段内容\n第二段内容";
Map<String, Object> graphqlVariables = new HashMap<>();
graphqlVariables.put("content", targetContent);

// 后续用WebClientGraphQLClient发送请求即可

你的现有WebClient配置(HttpClient wiretap、请求头部分)无需修改,问题不在HTTP传输层,而在请求体的JSON序列化环节。

内容的提问来源于stack exchange,提问作者H Nakazawa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:41:42