有时前端传递过来的Json不是对象类型,而是数组,如参数值内容为
[{
"rec_no": "001",
"user_name": "aaa"
},
{
"rec_no": "002",
"user_name": "bbb"
}
]
此时后端Controller接收代码如下
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
@RequestMapping(value = "/importUsers", method = RequestMethod.POST)
@ResponseBody
public String importUsers(@RequestBody Object map) {
try {
logger.debug(estr + "map:" + map.toString());
JSONArray ary= JSONArray.fromObject(map);
List<HashMap<String, Object>> list=JSONArray.toList(ary,new HashMap<String, Object >(),new JsonConfig());
//使用list 执行业务...
} catch (Exception e) {
logger.error(estr + e.toString());
}
return "ok";
}
1.用@RequestBody接收传递的参数,用Object作为接收的参数类型。
2.将参数map转换为JSONArray,使用JSONArray的toList方法转换为List队列的HashMap对象类型。
JSONArray.toList(ary,new HashMap<String, Object >(),new JsonConfig());中的参数1为源数组,参数2为转换目标对象,参数3可以固定默认new JsonConfig()。
转换后的HashMap对象既可以正常取出数组中的json键值对数据了,如rec_no等。