java在controller层怎么返回json数据给前台

/**
*
* @param request
* @return
*/
@RequestMapping(value = "linkCity", method = RequestMethod.POST)

@ResponseBody

public String linkCity(HttpServletRequest request){

String msg="";
try {

String privnce=request.getParameter("privnce");
List> msgList=new ArrayList>();
//根据省份获取市
List cityList = areaService.selectCity(privnce);
if(cityList.size()>0){

for (int i = 0; i < cityList.size(); i++) {

Area area=cityList.get(i);

Map msgMap=new HashMap();

msgMap.put("mcyCity", area.getCityname());

msgList.add(msgMap);

}

}

} catch (Exception e) {

e.printStackTrace();

}
return ;
}

要return什么回去..求指教

3个回答

@ResponseBody 的作用就是直接把返回的结果转成json格式
你可以直接返回msgList,@ResponseBody注解会自动转成json,把方法的返回类型改成List

mlc1218559742
小草mlc 回复niyidusk: 下面有红线,代表你代码编译不通过,报错了。原因是找不到msgList 这个变量,你在定义msgList 时是在try{}块里面定义的,msgList 变量的作用域就在try{}里面,下面的return找不到变量,就报错了。你把定义msgList 变量的代码放到try{}上面就行了
接近 4 年之前 回复
niyidusk
niyidusk 我运行了一下,编译是可以的,程序运行的时候不行,return msgList这里msgList下面会有红线,显示的就是msgList cannot be resolved to a variable
接近 4 年之前 回复
mlc1218559742
小草mlc 回复niyidusk: 是在编译的时候报错,还是程序运行的时候报错?
接近 4 年之前 回复
niyidusk
niyidusk 回复小草mlc: 还是报一样的错误
接近 4 年之前 回复
mlc1218559742
小草mlc 回复niyidusk: msgList 不能转换为一个变量,应该是类型不匹配导致的,在定义msgMap和msgList 加上泛型试试,确定一下变量的存储类型
接近 4 年之前 回复
niyidusk
niyidusk 麻烦看看怎么解决
接近 4 年之前 回复
niyidusk
niyidusk 我直接返回会报错msgList cannot be resolved to a variable
接近 4 年之前 回复

试试用jsonObject把msgList的数据转化一下,然后就能return了

niyidusk
niyidusk 好的,我试试看
接近 4 年之前 回复

在方法的参数列表中增加参数HttpServletResponse response;
然后

 PrintWriter out = response.getWriter();
 out.println(area.getCityname());
niyidusk
niyidusk PrintWriter out = response.getWriter(); out.println(area.getCityname());这个两个是要加在for循环里面?
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐