我是温浩然:
在网上看了好多,都是先获取json对象的元素,然后用java对象的set方法来转换的,感觉这中写法不好,所以,根据网上各位大大的文章,写了这个方法,如果有写的不对,不好的地方,请指出。
如有得罪,请见谅。
@RequestMapping(value = "/tulogin")
public void login(HttpServletRequest request,
HttpServletResponse response,@RequestBody Map<String, Object> map){
Object resultCode = ResultCode.SUCCEED;
Object result = null;
securityUtil.requrl(request,response);
String phone = (String) map.get("phone");
String password = (String) map.get("password");
String requrl = request.getRequestURI();
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost method = new HttpPost("http://localhost:8080/tu-login/tuloginMethod");
JSONObject jsonParam = new JSONObject();
jsonParam.put("phone", phone);
jsonParam.put("password", password);
jsonParam.put("requrl", requrl);
StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
method.setEntity(entity);
HttpResponse resGet;
try {
//通过DefaultHttpClient 来获得返回的参数(值)
resGet = httpClient.execute(method);
//将返回值设置编码格式,(避免乱码)
String resData = EntityUtils.toString(resGet.getEntity(),"utf-8");
System.out.println("resData"+resData);
//通过net.sf.json.JSONObject 来解析字符串
JSONObject resJSON = JSONObject.fromObject(resData);
System.out.println("resJSON"+resJSON);
//把json中的user对象获取,并强转。
Object userjson = resJSON.get("user");
String userString = userjson.toString();
//通过com.google.gson.Gson 来处理json 类型的user对象。
Gson gson = new Gson();
User user = gson.fromJson((String) userString, User.class);
System.out.println("user对象:"+user.getName());
//user就是转换后的对象。
//在这里,我对com.google.gson.JsonObject有点疑问,为啥这个不能解析返回的字符串呢?
//这个类有什么作用?
JsonObject jsonObj = new JsonObject();
jsonObj.getAsJsonObject(resData);
System.out.println("jsonObj转化resData是:"+jsonObj);
if("A00000".equals(resJSON.get("code"))){
String token = (String)resJSON.get("token");
securityUtil.addCookieToken(request,response,token,user.getId());
}
if ( !"A00000".equals(resJSON.get("code"))) {
result = resJSON.get("data");
}else{
result = securityUtil.getReqURL(request,response);
}
request.getSession().setAttribute("", "");
resultCode = resJSON.get("code");
} catch (ClassCastException e) {
logger.error(e.getMessage());
resultCode = ResultCode.INTERNAL_ERROR;
result = e.getMessage();
}catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
setResponse(response, resultCode, result);
}
我把整个方法贴上来了。有些没用,有用的都做注释了。
其中,输出的结果如下:
resData{"code":"A00000","data":null,"user":{"id":9,"name":"隔壁老王","email":"123","password":"4297F44B13955235245B2497399D7A93","deleted":false,"birthTime":1436371200000,"createTime":2015,"phone":"135135135","address":"123","perms":"cmsMng,cmsEdit,fileServerMng,fileServerAppMng,","tel":"123","permsName":null,"gender":0,"sex":"1","birth":null},"token":"ff0b328e-68a0-42af-8ed3-cef646b1f697"}
**********
这里可以看出,resJSON中,user也是一个json对象。所以,我才用JSONObject先获取user,再将user来转换成GSON。
resJSON{"code":"A00000","data":null,"user":{"id":9,"name":"隔壁老王","email":"123","password":"4297F44B13955235245B2497399D7A93","deleted":false,"birthTime":1436371200000,"createTime":2015,"phone":"135135135","address":"123","perms":"cmsMng,cmsEdit,fileServerMng,fileServerAppMng,","tel":"123","permsName":null,"gender":0,"sex":"1","birth":null},"token":"ff0b328e-68a0-42af-8ed3-cef646b1f697"}
**********
user对象:隔壁老王
×××××××××
下面是我不明白的,JsonObject为什么为空,我不太清楚。
jsonObj转化resData是:{}
还有就是,关于,GSON ,JSONObject ,JsonObject,三者的区别,还是不太明白。希望各位大大指教。
各位的json如果直接就可以解析成java对象的格式,直接用GSON来解析就行了,没有必要跟我先用JSONObject这样麻烦。
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
Json对象与json字符串互相转换处理工具
json 字符串转成c++类对象,json 字符串转成c++类对象
主要用于将java对象转换为json对象字符串,或字符串数组。
json字串 解析成jsonObject的工具,替代eval方法使用 IE8以上浏览器貌似自带 JSON.stringify
用java实现的递归下降文法 将JSon字符串转换成Java对象 为了简单化 忽略了很多情况 仅仅作为初接触编译原理的同学们共勉 User对象有一个Teacher对象 Teacher里有一个Book对象 等等 比如 User user User json User ...
由php对象生成json字符串 把php对象变成json字符串.zip
写了一个json与C#对象相互装换的类库,直接调用就行,有测试案例,代码注释非常详细 部分方法: /// 将Json字符串解析为C#中的对象 /// Json格式中的字符串值识别 /// 将Json字符串解析为Dictionary, dynamic>对象...
对象生成json字符串,根据字符串生成对象|list
json字符串和js对象之间的转换,包括eval、parseJSON函数、JSON.parse、$.toJSON、$.parseJSON、复杂的json格式对象使用,让你一分钟理解json的那些事
项目中关于json字符串转换的可用,导入项目即可进行引入转换
asp字符串转json对象类,原生vbs实现,json对象属性用obj("name")方式访问,obj.name方式不可以
使用JSON.parse将json字符串转换成json对象的时候会出错,主要是双引号,回车换行等影响明显,左尖括号和右尖括号也会导致显示问题,所以要在输出到页面进行json对象转换之前将一些特殊符合进行编码或转义,下面展示...
NULL 博文链接:https://yxgyh.iteye.com/blog/392657
json特殊字符串转换
解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包
NULL 博文链接:https://cpjsjxy.iteye.com/blog/1591356
json对象转化为字符串,也可以字符串的json转换为对象
字符串转换成json对象
一、JSON字符串转换为JSON对象 要使用上面的str1,必须使用下面的方法先转化为JSON对象: //由JSON字符串转换为JSON对象 var obj = eval(‘(‘ + str + ‘)’); 或者 var obj = str.parseJSON(); //由JSON...