如何将一个json中的json字符串转换成一个USER对象。
2015-07-06 12:53
741 查看
我是温浩然:
通过Gson 可以将一个JSON,成功的转换为一个用户对象,
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对象。
并把USER对象转换成字符串。
然后用GSON来把字符串格式(json)的user对象,转换成USER对象。
原文档如下:
我把整个方法贴上来了。有些没用,有用的都做注释了。
其中,输出的结果如下:
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这样麻烦。
通过Gson 可以将一个JSON,成功的转换为一个用户对象,
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());
resData这里的resData是一个字符串,其中包含user对象和其他的一些信息。
需要从其中摘取USER对象。
并把USER对象转换成字符串。
然后用GSON来把字符串格式(json)的user对象,转换成USER对象。
原文档如下:
@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这样麻烦。
相关文章推荐
- js
- javascript自定义事件
- javascript实现的多个层切换效果通用函数实例
- js控制下的飘窗
- javascript动态添加删除tabs标签的方法
- js显示隐藏
- js添加收藏夹
- 转:Json序列化和反序列化
- js 切换图片
- JSP内置对象
- Js 正则表达式 写了一个正整数或小数点或分数前两个正则表达式
- 实现js呼叫流行
- js实现:'w5-8' -> /^\w{5,8}$/
- 跨浏览器用javascript获取窗口的位置和大小
- JavaScript灵活性
- JavaScript灵活性
- 图解Javascript上下文与作用域
- 一些达成共识的JavaScript编码风格约定
- JSTL(fn函数)
- Jsonp post 跨域方案