您的位置:首页 > Web前端 > JavaScript

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.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