gson ajax需要哪些jar,JSONObject和Gson用法详解

JSONObject和Gson用法详解

#

#

1.JSONObject使用方法详解

所需jar包

json-lib-2.4-jdk15.jar

commons-beanutils-1.8.3.jar

commons-collections-3.2.1.jar

commons-lang-2.5.jar

commons-logging-1.1.1.jar

ezmorph-1.0.6.jar

一般情况下除JSONObject的jar之外还需要依赖的其他5个jar包,如上所示

常用的情景和实现方式

a.前台封装Json格式的数据后转成字符串(不包含复杂对象),后台用字符串接收,转成对应的类

前台实现 var params = {

'page': 1,'rows': 10,'pickUpTmStr': '2017-09-15 15:00','sendBackTmStr': '2017-09-16 15:00','day': '1','id': '123','sortType': 1

};

$.ajax({

type: "POST",url: "${ctx}/w/com/selectRentalCarForPage.json.json",data: {'paramsStr' : JSON.stringify(params)},dataType:'json',success: function(msg){

if(msg.resultCode=="SUCCESS"){

alert(msg.resultMessage);

}else{

closeAllDialog();

alert(msg.resultMessage);

}

}

});

后台实现 @RequestMapping(value = "/selectRentalCarForPage.json",method = RequestMethod.POST)

public @ResponseBody IPageModule selectRentalCarForPage(HttpServletRequest request,HttpServletResponse response,ModelMap model,String paramsStr) {

IPageModule iPageModule =null;

JSONObject jObjf = JSONObject.fromObject(paramsStr);

Map paramsMap = (Map)JSONObject.toBean(jObjf,Map.class);

try {

iPageModule = rentalCarService.selectRentalCarForPage(paramsMap);

} catch (Exception e) {

e.printStackTrace();

}

return iPageModule;

}

此为将前台接收的参数转为Map,如需要转成实体类,则可以如下实现: JSONObject jObjf = JSONObject.fromObject(studentStr);

Student student = (RentalCarIntent)JSONObject.toBean(jObjf,Student.class);

注:若是将参数转为对应的实体类对象,前台封装参数时的key必须要与实体类中字段对应,否则会报错

b.前台封装Json格式的数据后转成字符串(不包含复杂对象),后台用字符串接收,转成对应的类

前台实现 var params = {

'page': 1,'sortType': 1

'student':{

'name':'小明','sexCd':10

}

};

$.ajax({

type: "POST",String paramsStr) {

IPageModule iPageModule =null;

JSONObject jObjf = JSONObject.fromObject(paramsStr);

classMap.put("student",Student.class);

Map

try {

iPageModule = rentalCarService.selectRentalCarForPage(paramsMap);

} catch (Exception e) {

e.printStackTrace();

}

return iPageModule;

}

此为将前台接收的参数转为Map,如需要转成实体类,则可以如下实现: JSONObject jObjf = JSONObject.fromObject(studentStr);

Student student = (Student)JSONObject.toBean(jObjf,Student.class);

注:若是将参数转为对应的实体类对象,前台封装参数时的key必须要与实体类中字段对应,否则会报错,包括类中复杂对象名称,都要一一对应

另注:classMap用法介绍 /**字符串转java bean时,字符串中如果出现类似List,Map,ArrayList、自定义的类型等复杂类型,解决方法如下:

*1.Map classMap = new HashMap();

*2.classMap.put("对象的那个特殊的属性名(集合)",集合中的对象名.class);

*3.最后加上一个参数(JudgementRestaurant)JSONObject.toBean(jObjf,JudgementRestaurant.class,classMap);

*/

2. Gson使用方法详解

所需jar包

gson-2.3.1.jar

常用的情景和实现方式

a.前台封装Json格式的数据后转成字符串(不包含复杂对象),后台用字符串接收,转成对应的类

前台实现 同上(与JSONObject封装方法一致)

后台实现 //代码基本一致,只是转换稍有不同

JsonObject obj = (JsonObject)new Gson().fromJson(zhouStr,JsonObject.class);

JudgementFleet judgementFleet = new Gson().fromJson(obj.get("fleet"),JudgementFleet.class);

//或者

JudgementFleet judgementFleet = (JudgementFleet)new Gson().fromJson(zhouStr,JudgementFleet.class);

//list

JSONObject jsonObject = JSONObject.fromObject(zhouStr);

List productDutyList= (List)JSONArray.toCollection(jsonObject.getJSONArray("productDutyList"),ProductDuty.class);

重点发现

使用Json将字符串转换成实体类时,它会将所有的整数都变成浮点型,即所有的整数会加上’.0’,会导致后台判断出错,所以使用json的时候请格外注意,除此区别,没有复杂对象封装时,两者的转换效果是一样的

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值