日期:2014-05-19  浏览次数:20828 次

SPRING3 controller接收json参数的问题,请大家看看
就直接问大家吧,如果JSON数据非常复杂,想把这个作为参数传进SPRING的控制层里指定URL的方法,那么方法里的接收参数的类型应该是什么。我写个例子吧

json的数据是:
{
  "info": "basic",
  "name": "gold",
  "age": "18",
  "career": [
  "红星小学",
  "五星红旗职校",
  "城管高等专科学院"
  ],
  "family": [
  {
  "position": "father",
  "name": "dd",
  "age": "800"
  },
  {
  "position": "mother",
  "name": "mm",
  "age": "790"
  }
  ]
}

暂时就看上去这么简单吧。
接下去是spring controller的调用 我用3.0.5的SPRING,配置好了httpMessageConverter的对象bean
  @ResponseBody
@RequestMapping(value="/add", method=RequestMethod.GET)
public String doAdd(List info, Model model) throws Exception{

红色粗体的地方,就是报错的地方,用list做参数不行,我试过MAP也不行,网上很多示例都是返回大块的JSON数据,而不是接收大块的JSON数据,不知道大家在碰到这样的情况时候,是怎么处理的

------解决方案--------------------
用String类型,在转换成List或MAP对象。
------解决方案--------------------
你的意思是想传递一个json 字符串用什么类型接收吗?
不知道我理解的对不对、
那就传递用String 类型接收、然后在用net.sf.json.JSONObject.fromObject(string) 转成json
------解决方案--------------------
作为参数传进SPRING的控制层,你要记住,画面中js传入controller中的肯定是字符串,而spring 3中,controller中却可以直接将封装好的资料塞入list或者map,在画面直接可以转为json格式。
你这个是相反的,直接这样是不可以的。