json - 从 Spring Boot RestController 返回一个内部 json 字符串
问题描述
我有一个 Spring Boot RestController,它应该返回一个 json(按原样存储在 DB 列中,并检索到 String 对象中)。我把它分解成几个片段
@RestController
public class MyController {
.....
@RequestMapping(value = "/restAPI/v2/get/mytest",...produces = MediaType.APPLICATION_JSON_VALUE)
public RespBean fetchList(HttpServletRequest httpRequest,..) {
...
String abc = userData.getJson(); //Json string
System.out.print(abc); // gives {"name":"test", "desc": "My desc" }
respBean.setData(abc)
return respBean;
}
}
RespBean 是
public class RespBean {
private String httpStatus, appCode;
private Object data;
//getters, setters ...
}
现在的问题是,当我检查 PostMan 中的响应时,我得到了一个 json 转义字符串作为数据字段,而不是一个 json 'object',比如
{
"httpStatus": "200",
"appCode": "21",
"data": "{\"name\":\"test\", \"desc\": \"My desc\" }"
}
我可以告诉 RestController 不要转义 RespBean 中的数据字段,并将其作为 json 对象返回吗?有替代解决方案吗?我试图不改变 RespBean 的结构(它在很多地方使用)并保持状态/代码/数据结构。
谢谢你进来看看。
解决方案
你可以使用@JsonRawValue
它
public class RespBean {
private String httpStatus, appCode;
@JsonRawValue
private Object data;
//getters, setters ...
}
推荐阅读
- python - Pandas.replace() 不会改变数据
- python-3.x - Python sqlite3 的 REAL 精度不一致
- bash - 同时递归搜索和替换值
- javascript - iOS:在页面内插入带有 SRC 的 iFrame 会立即在 Safari 中打开 url
- c# - 如何有效地重写无法在 EFCore 3.1 中翻译的 LINQ 表达式“DbSet.Where(...Any(...))”?
- list - Flutter 按钮列表
- firebase - 例外:错误值(第 9 行,文件“代码”)
- git - 在 intellij 中显示未暂存和暂存文件的 git diff
- javascript - WebRTC 传输高音频流采样率
- c - 你能给我一些关于我的问题的建议吗?