我是温浩然:
在网上看了好多,都是先获取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这样麻烦。
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
在给定的“利用java反射将json字符串转成对象”的主题中,我们将深入探讨如何借助反射机制将JSON字符串转换为Java对象。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...
`JsonUtil.java` 文件很可能是一个自定义的工具类,它封装了Fastjson的一些常用操作,如将JSON字符串转换为Java对象,或者将Java对象转换为JSON字符串。下面是一些可能在`JsonUtil.java`中实现的方法: 1. `...
然后,通过`readValue`方法将JSON字符串解析为一个`List<User>`对象。`TypeReference`是用来指定目标类型,因为泛型在编译时会被擦除,所以需要这种方式来告诉Jackson我们期望的类型。 运行此程序后,会打印出两个...
要将JSON字符串保存在Windows系统中,首先你需要在Java代码中创建一个JSON对象,然后将其序列化为字符串。例如,使用Jackson库,你可以这样做: ```java import com.fasterxml.jackson.databind.ObjectMapper; // ...
现在,我们想要将一个`User`对象转换为JSON字符串,可以使用`ObjectMapper`类: ```java import com.fasterxml.jackson.databind.ObjectMapper; public class JSONDemo { public static void main(String[] args)...
在这个例子中,我们首先定义了一个JSON格式的字符串`jsonString`,然后使用`JSON.parse()`将其解析成一个JavaScript对象`jsonObject`。接着,我们可以通过点操作符访问解析后的对象属性。 如果你在实际项目中处理...
- `json.dumps(obj)`:将Python对象`obj`转换成一个JSON格式的字符串。 - `json.loads(string)`:将JSON格式的字符串`string`转换为Python字典或其他相应的数据类型。 ### 网络请求 在使用Python进行网络API调用...
通常,这个例子会展示如何将一个JSON字符串解析成一个Java对象,例如User类的实例。通过阅读并理解这个示例,开发者可以学习到如何在实际项目中使用Fastjson进行数据转换。 总结来说,Fastjson作为一个强大的JSON...
这将把User对象转换成一个JSON字符串。 2. **反序列化**: 反之,如果你想从JSON字符串创建Java对象,可以使用`Gson.fromJson()`方法。 ```java User deserializedUser = gson.fromJson(jsonString, User.class);...
这段代码首先将JSON字符串解析成一个TJSONObject实例,然后遍历每个键值对,根据键来提取相应的值。注意,`JsonPair.JsonValue`可以是各种JSON类型,如TJSONNumber(表示数字)、TJSONString(表示字符串)等,需要...
在这个例子中,`User`是你定义的一个类,`JSONObject.fromObject(user)`将`User`对象转换成一个JSON对象。 总的来说,"json需要的jar"指的是在Java项目中处理JSON时,必须引入相应的库,例如`org.json.jar`,以使用...
这段代码会将`User`对象转换成一个JSON字符串。 总的来说,"json的jar包"是Java Web开发中的关键组件,它简化了JSON数据的处理,提高了开发效率,使得开发者可以更专注于业务逻辑,而不是数据格式的转换。在选择和...
例如,可以使用`CONCAT()`函数配合`json_array()`和`json_object()`将多行数据组合成一个JSON数组,每行数据作为一个JSON对象。这样,整个表就被映射成了一个完整的JSON文档,便于在Web应用或其他支持JSON的环境中...
例如,如果你有一个对象,你可以使用`JsonSerializer.Deserialize`方法将其转换为JSON字符串,反之亦然: ```csharp public class User { public string Name { get; set; } public int Age { get; set; } } ...
这段代码会将JSON字符串解析成一个`User`对象,其中`name`字段为"John",`age`字段为30。 而Base64编码则常用于对敏感数据如密码进行加密。在Android App接收到Base64编码的加密数据后,可以使用Base64库进行解码,...
2. **调用`parse`方法**:通过调用`url.parse()`方法传入目标URL字符串,即可得到一个包含URL各部分信息的对象。 3. **访问URL组件**:解析结果是一个对象,可以直接访问其各个属性来获取URL的各部分信息。 示例...
这段代码会将JSON字符串转换成一个User对象的列表。 标签"json list list <bean>"进一步强调了Gson在处理JSON数组到Java集合类型(如List)的能力,特别是当集合中的元素是自定义的Java Bean时。这样的功能对于处理...
它能够把一个JSON字符串转换成一个Java对象,同时也能把一个Java对象转换为JSON字符串。Gson作为一个开源项目,可以在***找到,并且支持包括那些没有源代码的遗留Java对象在内的任意Java对象。 Gson的主要目标是...
例如,一个User类的对象可以被转换成一个JSON字符串,便于在网络上传输或存储。 2. **反序列化**:将JSON字符串解析回Java对象。这允许我们从服务器接收JSON数据并自动转换为Java对象,方便进一步处理。 3. **类型...
在这个例子中,`toJson()`方法将`User`对象转换成了JSON格式的字符串。 2. 反序列化:将JSON字符串转换为Java对象 ```java String jsonString = "{\"name\":\"John\",\"age\":30}"; User user = gson.fromJson...