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

Spring应用中application.yml含单引号JSON的解析问题求助

解决Spring中application.yml含单引号的超长JSON解析异常问题

问题场景

在Java Spring应用读取application.yml时,需获取用于请求的超长JSON格式body属性,但当JSON中包含单引号(如O'brien)时,会触发YAML解析异常。尝试<%='超长JSON内容'%>和<%=超长JSON%>写法后,均出现"Nested mappings are not allowed in compact mappings"错误。

正确解决方法

方法1:转义单引号(短JSON适用)

在YAML单引号包裹的字符串中,单引号需用两个单引号转义,示例:

data:
  body: '{"name":"O''brien"}'

方法2:双引号包裹+转义内部双引号

用双引号包裹整个JSON字符串,内部的双引号用反斜杠转义,示例:

data:
  body: "{\"name\":\"O'brien\"}"

方法3:块级字符串(超长JSON推荐)

使用YAML的|或>定义块级字符串,无需转义单引号,格式清晰易维护:

data:
  body: |
    {"name":"O'brien", "age":30, "address":"123 Main St"}
  • |:保留换行符,适合需保留格式的JSON
  • >:将换行符转为空格,适合压缩格式的超长JSON

方法4:独立JSON文件(超大型JSON适用)

将超长JSON存为独立文件(如request-body.json),在Spring中通过读取文件加载:

@Value("classpath:request-body.json")
private Resource bodyResource;

public String getRequestBody() throws IOException {
    return FileUtils.readFileToString(bodyResource.getFile(), StandardCharsets.UTF_8);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:45:33