如何将一个json中的json字符串转换成一个USER对象。

JSON到Java对象转换实操:Gson与JSONObject的应用
本文详细介绍了如何使用Gson和JSONObject进行JSON与Java对象之间的转换,包括从JSON字符串中提取特定对象、将其转换为字符串以及最终将其解析回Java对象的过程。同时,解释了GSON、JSONObject和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这样麻烦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值