如何从Spring mVC返回JSON数据列表

时间:2014-07-12 10:59:31

标签: json spring-mvc

我想返回本身就是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

2 个答案:

答案 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);