JSONObject和Gson用法详解

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格式的数据后转成字符串(不包含复杂对象),后台⽤字符串接收,转成对应的类
'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){
sultCode=="SUCCESS"){
sultMessage);
}else{
胡俟closeAllDialog();
sultMessage);
}
}
调解仲裁法
});
后台实现
@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<String,Object> paramsMap = (Map<String,Object>)Bean(jObjf, Map.class);
try {
iPageModule = rentalCarService.selectRentalCarForPage(paramsMap);
} catch (Exception e) {
e.printStackTrace();
}
return iPageModule;
}
此为将前台接收的参数转为Map,如需要转成实体类,则可以如下实现:
JSONObject jObjf = JSONObject.fromObject(studentStr);
Student student = (Bean(jObjf, Student.class);
注:若是将参数转为对应的实体类对象,前台封装参数时的key必须要与实体类中字段对应,否则会报错
b.前台封装Json格式的数据后转成字符串(不包含复杂对象),后台⽤字符串接收,转成对应的类
'pickUpTmStr': '2017-09-15 15:00',
'sendBackTmStr': '2017-09-16 15:00',
'day': '1',
'id': '123',
'sortType': 1
'student':{
'name':'⼩明',
'sexCd':10
}
};
$.ajax({
type: "POST",
url: "${ctx}/w/com/selectRentalCarForPage.json.json",
data: {'paramsStr' : JSON.stringify(params)},
dataType:'json',
success: function(msg){
sultCode=="SUCCESS"){
sultMessage);
}else{
closeAllDialog();
sultMessage);
}
}
});
后台实现
@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);
classMap.put("student", Student.class);
Map<String,Object> paramsMap = (Map<String,Object>)Bean(jObjf, Map.class,classMap);
try {
iPageModule = rentalCarService.selectRentalCarForPage(paramsMap);
} catch (Exception e) {
e.printStackTrace();
}
return iPageModule;
}
此为将前台接收的参数转为Map,如需要转成实体类,则可以如下实现:
JSONObject jObjf = JSONObject.fromObject(studentStr);
Student student = (Bean(jObjf, Student.class);
注:若是将参数转为对应的实体类对象,前台封装参数时的key必须要与实体类中字段对应,否则会报错,包括类中复杂对象名称,都要⼀⼀对应
实验语音学另注:classMap⽤法介绍
/**字符串转java bean时,字符串中如果出现类似List , Map ,ArrayList、⾃定义的类型等复杂类型,解决⽅法如下:
*1.Map<String, Class> classMap = new HashMap<String, Class>();
*2.classMap.put("对象的那个特殊的属性名(集合)", 集合中的对象名.class);
*3.最后加上⼀个参数(Bean(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().("fleet"), JudgementFleet.class);
//或者
JudgementFleet judgementFleet = (JudgementFleet)new Gson().fromJson(zhouStr, JudgementFleet.class);
//list
JSONObject jsonObject = JSONObject.fromObject(zhouStr);
List<ProductDuty> productDutyList= (List<ProductDuty>)JSONArray("productDutyList"), ProductDuty.class);
重点发现
使⽤Json将字符串转换成实体类时,它会将所有的整数都变成浮点型,即所有的整数会加上’.0’,会导致后台判断出错,所以使⽤json的时候请格外注意,除此区别,没有复杂对象封装时,两者的转换效果是⼀样的

本文发布于:2024-09-21 01:33:05,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/523465.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   封装   前台   字符串   实体类   参数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议