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
相关产品推荐
相关产品推荐

