Map转json是如何保证顺序以及Gson的单例化
2016-08-10 14:50
2331 查看
在使用Redis缓存排序好的列表数据时,想在取数据的时候可以取列表中的某一项,于是决定使用Map来存放,并序列化这个Map. 由于Map本身是没有顺序的约束的。于是决定使用LinkedHashMap来确保key/value存放的顺序。
但如何将这个LinkedHashMap实例按照LinedHashMap的类型转成Json呢,笔者使用fastjson时,发现其不支持这种情况。经过各种尝试和查询资料,最终使用Gson来进行Java对象和Json String的转换。
调用Gson对象进行转换的地方比较多,如果在调用的地方每次new Gson的话,是比较影响性能的。而Gson本身是线程安全的,即Gson的对象可以被多个线程同时使用,于是在代码中单例化Gson对象势在必行。
笔者倾向于使用如下单例模式来提供该功能
但如何将这个LinkedHashMap实例按照LinedHashMap的类型转成Json呢,笔者使用fastjson时,发现其不支持这种情况。经过各种尝试和查询资料,最终使用Gson来进行Java对象和Json String的转换。
gson.fromJson(jsonStr, LinkedHashMap.class);
String json = gson.toJson(jsonObject, LinkedHashMap.class);
调用Gson对象进行转换的地方比较多,如果在调用的地方每次new Gson的话,是比较影响性能的。而Gson本身是线程安全的,即Gson的对象可以被多个线程同时使用,于是在代码中单例化Gson对象势在必行。
笔者倾向于使用如下单例模式来提供该功能
public class GsonUtil { private static class GsonHolder{ private static final Gson INSTANCE = new Gson(); } /** * 获取Gson实例,由于Gson是线程安全的,这里共同使用同一个Gson实例 */ public static Gson getGsonInstance() { return GsonHolder.INSTANCE; } }
相关文章推荐
- Gson.toJson()时内存溢出StackOverflowError
- 使用GSON库转换Java对象为JSON对象的进阶实例详解
- Java的JSON转换类库GSON的基础使用教程
- Java的JSON转换库GSON的基本使用方法示例
- Android学习笔记45之gson解析json
- Android中gson、jsonobject解析JSON的方法详解
- 举例讲解Java的JSON类库GSON的基本用法
- GSON实现Java对象与JSON格式对象相互转换的完全教程
- Java的JSON格式转换库GSON的初步使用笔记
- 将Java的List结构通过GSON库转换为JSON的方法示例
- 使用GSON库将Java中的map键值对应结构对象转换为JSON
- GSON实现Java对象的JSON序列化与反序列化的实例教程
- JAVA使用Gson解析json数据实例解析
- Java中利用gson解析Json实例教程
- 利用gson将map转为json示例
- 在struts2 中使用jQuery 的Ajax 技术
- Gson的使用-android
- Gson自定义处理Calendar日期Date时间类型
- 使用GSON来解析和生成JSON基础,通过传入List集合自动生成json字符串(一)
- Gson详解:Java对象与JSON相互转换的利器