跟我撩fastjson-第三章:Java泛型的序列化和反序列化
2017-10-15 16:20
656 查看
我们在第二章中讲解的集合例子中,集合中数据类型都是简单的String类型。现在我们来一个稍微复杂点的,List中存放的是User对象实例,那么应该如何序列化和反序列化呢?我们直接上代码。
程序输出结果:
序列化之后:[{“age”:25,”id”:88888,”name”:”张三”}]
反序列化之后:[{“name”:”张三”,”id”:88888,”age”:25}]
反序列化之后:class com.alibaba.fastjson.JSONObject
反序列化之后,我们希望得到的是一个User列表,但是从上面执行结果来看,并不是一个User列表,而是fastjson的JSONOject对象(其实JSONOject就是一个大Map)的列表。那么应该如何处理才能得到我们想要的结果呢?其实也很简单,就是在解析时,我们传入一个TypeReference实例作为参数即可。
这次我们来看看输出结果如何
序列化之后:[{“age”:25,”id”:88888,”name”:”张三”}]
反序列化之后:[User{id=88888, name=’张三’, age=25}]
反序列化之后:class com.xgl.util.study.model.User
其实我们可以将
替换为
这样也能解决这个泛型问题。
/** * Java泛型的序列化和反序列化 */ @Test public void run4(){ User user = new User(); user.setId(88888L); user.setAge(25); user.setName("张三"); List<User> userList = new ArrayList<User>(); userList.add(user); String jsonString = JSON.toJSONString(userList); System.out.println("序列化之后:"+jsonString); List<User> newList = JSON.parseObject(jsonString, List.class); System.out.println("反序列化之后:"+newList); System.out.println("反序列化之后:"+newList.get(0).getClass()); }
程序输出结果:
序列化之后:[{“age”:25,”id”:88888,”name”:”张三”}]
反序列化之后:[{“name”:”张三”,”id”:88888,”age”:25}]
反序列化之后:class com.alibaba.fastjson.JSONObject
反序列化之后,我们希望得到的是一个User列表,但是从上面执行结果来看,并不是一个User列表,而是fastjson的JSONOject对象(其实JSONOject就是一个大Map)的列表。那么应该如何处理才能得到我们想要的结果呢?其实也很简单,就是在解析时,我们传入一个TypeReference实例作为参数即可。
@Test public void run4(){ User user = new User(); user.setId(88888L); user.setAge(25); user.setName("张三"); List<User> userList = new ArrayList<User>(); userList.add(user); String jsonString = JSON.toJSONString(userList); System.out.println("序列化之后:"+jsonString); List<User> newList = JSON.parseObject(jsonString, new TypeReference<List<User>>(){}); System.out.println("反序列化之后:"+newList); System.out.println("反序列化之后:"+newList.get(0).getClass()); }
这次我们来看看输出结果如何
序列化之后:[{“age”:25,”id”:88888,”name”:”张三”}]
反序列化之后:[User{id=88888, name=’张三’, age=25}]
反序列化之后:class com.xgl.util.study.model.User
其实我们可以将
List<User> newList = JSON.parseObject(jsonString, new TypeReference<List<User>>(){});
替换为
List<User> newList = JSON.parseArray(jsonString, User.class);
这样也能解决这个泛型问题。
相关文章推荐
- 用fastjson将数据序列化和反序列化给jfinal的model的方案
- java中fastjson生成和解析json数据(序列化和反序列化数据)
- Android 中的Json解析工具fastjson 、序列化、反序列化
- fastjson、gson、jackson序列化和反序列化性能对比
- fastjson生成和解析json数据,序列化和反序列化数据
- fastjson生成和解析json数据,序列化和反序列化数据
- java分享第十三天(fastjson生成和解析json数据,序列化和反序列化数据)
- fastjson生成和解析json数据,序列化和反序列化数据
- FastJson 对enum的 序列化(ordinal)和反序列化
- fastjson生成和解析json数据,序列化和反序列化数据
- Android 中的Json解析工具fastjson 、序列化、反序列化
- [置顶] Fastjson 序列化,反序列化Map对象排序问题(字符串转map,map转字符串)
- fastjson深度源码解析- 反序列化(二) - 内部注册反序列化解析
- Newtonsoft 和 FastJson 的序列化和反序列化性能的对比
- fastjson生成和解析json数据,序列化和反序列化数据
- fastjson生成和解析json数据,序列化和反序列化数据
- fastjson生成和解析json数据,序列化和反序列化数据
- FastJson解析实例--对象序列化和反序列化
- fastjson生成和解析json数据,序列化和反序列化数据
- fastjson生成和解析json数据,序列化和反序列化数据