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

Java中输出JSONObject日志时如何去除多余反斜杠?

解决日志输出JSON带多余反斜杠的问题

先明确你的问题场景:
你的代码:

@Slf4j
public class MyMessage {
  public void initMy(JSONObject json) {
    log.info("Object: "+ json.toString());
  }
}

传入的原始JSON是 {"request":"hello"},但日志最终输出成 Object: {\"request\":\"hello\"},需要去掉这些多余的反斜杠。

常见解决办法:

1. 改用日志框架的参数化输出(最推荐)

直接拼接字符串是核心问题——如果你的日志框架(比如Logback/Log4j)配置了JSON格式输出,框架会自动转义字符串里的引号,防止破坏日志本身的JSON结构。

改成占位符写法即可:

log.info("Object: {}", json.toString());

通过{}作为参数占位符,日志框架会正确识别参数内容,不会额外添加转义符。

2. 切换JSONObject的序列化方法

如果使用的是阿里FastJSON的JSONObject,建议用toJSONString()替代toString(),前者会输出标准无转义的JSON字符串:

log.info("Object: {}", json.toJSONString());

要是用的是org.json的JSONObject,它的toString()本身就应该输出正确的JSON,那问题基本就出在日志字符串拼接上,用第一种方法就能解决。

3. 为什么你之前的replace方法没用?

你写的json.toString().replace("\\\"", "\"")是试图把字符串里的\"替换成",但如果是日志框架在输出阶段才做的转义,你在代码里替换完后,框架还是会再次转义,等于无效操作。所以优先用前面两种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:36:02