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

SpringBoot 2.0.0返回JSON文件内容时如何消除转义字符?

嘿,这个问题我之前帮好几个开发者解决过——本质是你返回的是字符串而不是真正的JSON对象,Spring MVC自动给字符串里的特殊字符加了转义。咱们一步步来搞定它:

问题根源

你现在的代码应该是把读取到的JSON字符串直接以String类型返回给前端了。Spring MVC会把这个字符串当成普通文本处理,为了保证字符串能被正确解析,就自动给双引号、反斜杠这些字符加了转义,最终返回的是一个带转义的字符串,而不是前端期望的JSON对象。

解决方案(两种常用方式)

方式一:转成JSON对象返回(推荐)

把读取到的JSON字符串转换成Java对象(比如Map或者自定义POJO),Spring会自动把这个对象序列化成标准的JSON响应,不会有转义。

1. 修改ReadFile类,返回JSON对象

用Spring自带的Jackson ObjectMapper来转换:

@Component
public class ReadFile {
    // 注入Spring默认的ObjectMapper
    @Autowired
    private ObjectMapper objectMapper;

    public Object readJson(String path) throws IOException {
        ClassPathResource classPathResource = new ClassPathResource(path);
        // 直接把文件内容转成Object(或者指定成Map/自定义POJO)
        return objectMapper.readValue(classPathResource.getInputStream(), Object.class);
    }
}

2. Controller层返回对象

@RestController
public class JsonController {
    @Autowired
    private ReadFile readFile;

    @GetMapping("/json")
    public Object getJson() throws IOException {
        return readFile.readJson("your-file-name.json");
    }
}

这样返回的响应就是标准的JSON,没有任何转义:

{"name":"fileName","fields":[{"fields":{"fieldO":[{"id":"label1","name":"name1"}]}}]}

方式二:直接返回Raw JSON字符串(无需转对象)

如果你不想把JSON转成Java对象,可以直接返回字符串,但要告诉Spring这是JSON格式的响应,不要转义:

修改Controller方法

@GetMapping(value = "/json", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> getJson() throws IOException {
    String jsonContent = readFile.read("your-file-name.json"); // 你的原读取方法,返回String
    return ResponseEntity.ok()
            .contentType(MediaType.APPLICATION_JSON)
            .body(jsonContent);
}

或者更简单的,用@ResponseBody配合produces:

@GetMapping(value = "/json", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public String getJson() throws IOException {
    return readFile.read("your-file-name.json");
}

这种方式下,Spring会把字符串当成JSON直接返回,不会添加转义字符。

额外提醒

如果你用的是原代码里的JSONException,建议换成Jackson的JsonProcessingException,因为Spring Boot 2.0默认用Jackson作为JSON处理器,org.json的库不是默认依赖,避免不必要的依赖引入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:15:04