当前位置: 代码迷 >> 综合 >> com.alibaba.fastjson和net.sf.json用法区别
  详细解决方案

com.alibaba.fastjson和net.sf.json用法区别

热度:14   发布时间:2024-01-17 06:27:32.0

情景再现:在进行项目迁移时,之前是net.sf.json处理,迁移后是com.alibaba.fastjson处理,这两者处理json串时会有些不同,在此记录一下。

 

案例展示:目标是把json串,转换成javabean对象。

1.net.sf.json处理json串如下:

@RequestMapping(value = "/query", method = RequestMethod.POST)
@ResponseBody
public String query(@RequestBody String body) {//【1】把json串转化成json对象JSONObject object = JSONObject.fromObject(body);//【!不同之处!】//【2】根据json对象的属性值获取单个字段值String  name = (String) object.get("name");//【3】根据json对象属性值获取list转换成json数组JSONArray jsnoArray = (JSONArray) object.get("list");//【4】遍历json数组         for (Iterator iter = jsnoArray.iterator(); iter.hasNext(); ) {//【5】遍历出某个json对象    JSONObject jsonObject = (JSONObject) iter.next();//【6】把json对象转换成javabean对象  User user=(User) JSONObject.toBean(jsonObject, User.class);//【!不同之处!】//【7】得到javabean就可以进行其他操作 ...}return "";}

2.com.alibaba.fastjson处理json串如下:

@RequestMapping(value = "/query", method = RequestMethod.POST)
@ResponseBody
public String query(@RequestBody String body) {//【1】把json串转化成json对象JSONObject object = JSONObject.parseObject(body);//【!不同之处!】//【2】根据json对象的属性值获取单个字段值String  name = (String) object.get("name");//【3】根据json对象属性值获取list转换成json数组JSONArray jsnoArray = (JSONArray) object.get("list");//【4】遍历json数组         for (Iterator iter = jsnoArray.iterator(); iter.hasNext(); ) {//【5】遍历出某个json对象    JSONObject jsonObject = (JSONObject) iter.next();//【6】把json对象转换成javabean对象  User user=  JSON.parseObject(jsonObject.toJSONString(), User.class);//【!不同之处!】//【7】得到javabean就可以进行其他操作 ...}return "";}

最后总结两者区别:

【1】json转换json对象

net.sf.json使用:JSONObject object = JSONObject.fromObject(body);

com.alibaba.fastjson: JSONObject object = JSONObject.parseObject(body);

【2】json对象转换成javabean对象

net.sf.json使用:User user=(User) JSONObject.toBean(jsonObject, User.class);

com.alibaba.fastjson: User user=  JSON.parseObject(jsonObject.toJSONString(), User.class);

ok 就到这里啦