我想返回本身就是JSON数据的数据,但看起来像Spring HttpMessageConverters再次将数据转换为JSON,最后给我的数据包含所有双引号周围的转义字符。
以下是我的控制器代码。
@RequestMapping(value = {"/getSummary"}, method = {RequestMethod.POST}, produces=MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<String> getSummary(@RequestBody long empId) {
}
在响应中,我获得了JSON但是使用了下面的转义字符:
{
"nameSummary": "{ \"_id\" : 3242242 , \"name\" : \"juan\"}",
"addressSummary": "{ \"_id\" : 3242243 , \"name\" : \"john\"}",
"bioSummary": "{ \"_id\" : 3242244 , \"name\" : \"eric\"}"
}
我尝试了各种各样的方法,比如@JsonRawValue,produce = MediaType.APPLICATION_JSON_VALUE,但不能正常工作。
我希望输出没有转义字符,请你帮忙做点帮助。
更新:我尝试使用包含3个文件的POJO,其中每个字段都包含JSON数据,但问题仍然存在。
谢谢&amp;问候 Venkat
答案 0 :(得分:0)
直接发送JSON数据
//request mapping
public void getSummary(HttpServletResponse response, @RequestBody long empId) {
response.setContentType("application/json");
respone.getwriter().write(myjson);
response.getWriter().flush();
response.close();
}
我省略了错误处理和其他内容。
这是在@REsponseBody是一个选项之前做到这一点的方法。
答案 1 :(得分:0)
您可以使用Google的 Gson
Gson是一个Java库,可用于将Java对象转换为 他们的JSON表示。它也可以用于转换JSON 字符串到等效的Java对象
如何使用Gson的示例代码
Type listType = new TypeToken<List<String>>() {}.getType();
List<String> target = new LinkedList<String>();
target.add("blah");
Gson gson = new Gson();
String json = gson.toJson(target, listType);
List<String> target2 = gson.fromJson(json, listType);