Gson超量/少量转换
来源:互联网 发布:网络安全设备有哪10种 编辑:程序博客网 时间:2024/04/28 02:41
一:研究的问题:当把json字符串利用Gson转换成对应变量的对象时,如果json字符串中包涵的key-value键值对多于对象中的属性时,会不会不能转换?
过程:
1、新建一个Test类
package com.test;import java.util.HashMap;import java.util.Map;import com.google.gson.Gson;public class Test {public static <T> T jsonToObject(String json, Class<T> classOfT)throws Exception {Gson gson = new Gson();return gson.fromJson(json, classOfT);}public static void main(String[] args) {Map<String, String> map = new HashMap<String, String>();map.put("name", "hy");map.put("age", "20");map.put("sex", "male");String json = JsonUtil.toJson(map);System.out.println(json);try {Bean bean = jsonToObject(json, Bean.class);System.out.println(bean.getName());System.out.println(bean.getSex());} catch (Exception e) {e.printStackTrace();}}}
Test类中关联的jar包为gson-2.1.jar,和一个object转json字符串的工具类JsonUtil:
package com.test;import org.codehaus.jackson.map.ObjectMapper;import org.codehaus.jackson.type.JavaType;import org.codehaus.jackson.type.TypeReference;import org.springframework.util.Assert;/** * Util - JSON */public class JsonUtil {private static ObjectMapper mapper = new ObjectMapper();/** * 将对象转换为JSON字符串 * @param object 对象 */public static String toJson(Object object) {Assert.notNull(object);try {return mapper.writeValueAsString(object);} catch (Exception e) {e.printStackTrace();}return null;}/** * 将JSON字符串转换为对象 * @param json JSON字符串 * @param valueType 对象类型 */public static <T> T toObject(String json, Class<T> valueType) {Assert.notNull(json);Assert.notNull(valueType);try {return mapper.readValue(json, valueType);} catch (Exception e) {e.printStackTrace();}return null;}/** * 将JSON字符串转换为对象 * @param json JSON字符串 * @param typeReference 对象类型 */public static <T> T toObject(String json, TypeReference<?> typeReference) {Assert.notNull(json);Assert.notNull(typeReference);try {return mapper.readValue(json,typeReference);} catch (Exception e) {e.printStackTrace();}return null;}/** * 将JSON字符串转换为对象 * @param json JSON字符串 * @param javaType 对象类型 */public static <T> T toObject(String json, JavaType javaType) {Assert.notNull(json);Assert.notNull(javaType);try {return mapper.readValue(json, javaType);} catch (Exception e) {e.printStackTrace();}return null;}}2、新建一个被转换的实体类Bean
package com.test;public class Bean {public String name;public String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}
3、Test类main主函数中,map包含3个键值对,而实体类bean中只有两个属性,利用gson把json字符串转bean对象时,如果能够转换成功,说明gson能超量转换;反之,不能。
4、输出结果:
{"sex":"male","age":"20","name":"hy"}hymale5、结论:利用gson把json字符串转bean对象时,gson能超量转换。
二:研究的问题:当把json字符串利用Gson转换成对应变量的对象时,如果json字符串中包涵的key-value键值对少于对象中的属性时,会不会不能转换?
过程和以上类似,修改部分代码,注释掉map的两个键值对,使json字符串对应的值少于实体类:
package com.test;import java.util.HashMap;import java.util.Map;import com.google.gson.Gson;public class Test {public static <T> T jsonToObject(String json, Class<T> classOfT)throws Exception {Gson gson = new Gson();return gson.fromJson(json, classOfT);}public static void main(String[] args) {Map<String, String> map = new HashMap<String, String>();map.put("name", "hy");//map.put("age", "20");//map.put("sex", "male");String json = JsonUtil.toJson(map);System.out.println(json);try {Bean bean = jsonToObject(json, Bean.class);System.out.println(bean.getName());System.out.println(bean.getSex());} catch (Exception e) {e.printStackTrace();}}}输出:
{"name":"hy"}hynull
结论:利用gson把json字符串转bean对象时,gson能少量转换。
0 0
- Gson超量/少量转换
- Gson转换
- Gson json数组转换
- Json转换利器Gson
- android gson转换对象
- GSON转换报错
- gson日期转换问题
- json转换之Gson
- Gson对象转换
- gson json字符串转换
- Json转换利器Gson
- Json转换利器-Gson
- gson转换list对象
- Gson转换工具
- 转换利器Gson
- Json转换利器Gson
- Gson 转换工具类
- gson 转换 null
- android listview,GridView 和 ScrollView
- 丑数~
- 找出最大值和最小值的时间复杂度比较小的一种方法
- JAVA远程下载文件 总结 思路.
- INF文件详细解析
- Gson超量/少量转换
- PHP获取用户访问IP地址的5种方法
- 在android中ScrollView嵌套ScrollView解决方案
- Java中OutOfMemoryError(内存溢出)的三种情况及解决办法
- Download U.S. Stock Data form Yahoo Finance
- 活动被回收的处理、活动的启动模式、一键退出所有活动、UI控件、四种布局方式、自定义控件
- 串行流水灯设计
- vi 学习笔记
- spring从入门到上手-AOP