首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Singleton类中的静态GSON对象将Java对象序列化为JSON

使用Singleton类中的静态GSON对象将Java对象序列化为JSON
EN

Stack Overflow用户
提问于 2017-03-31 04:24:42
回答 2查看 1.2K关注 0票数 1

我有一个关于Singleton类行为的问题。

场景

我们有被合作伙伴使用的We服务,请求在1秒内频繁出现2-3次。因此,它们是大量使用的服务。我们希望以JSON格式存储请求和响应。

到目前为止,在每个webservice接口类中,我们已经启动了Gson对象,并将java对象序列化为json。

问题

我只是在想,如果我在Singleton类中启动一次Gson对象作为静态对象,然后将它引用到所有java对象的请求/响应序列化到Json,它会引起任何问题/问题吗?

我的意思是,由于有多个can服务,其中有两个被合作伙伴大量使用,那么在所有webservice中访问GSON的单个实例是否会导致任何延迟或任何其他问题?如果是的话,除了记忆之外,还有什么好处和问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-31 05:00:08

来自Gson的javadoc

这是使用Gson的主要类。Gson通常通过首先构造Gson实例,然后在其上调用toJson(Object)fromJson(String, Class)方法来使用。Gson实例是线程安全的,因此可以在多个线程之间自由地重用它们。

因此,在您的服务中只有一个Gson实例并为每个请求/响应重用它是可以的。例如,您可以考虑创建一个util类,如下所示:

代码语言:javascript
复制
public abstract class GsonUtils {
    private static Gson gson = new Gson();

    static {
        // your extra init logic goes here
    }

    public static <T> T fromJson(String json, Class<T> classOfT) {
        return gson.fromJson(json, classOfT);
    }


    public static String toJson(Object object) {
        if (object == null) {
            return "";
        }
        return gson.toJson(object);
    }
}

或者你可以按你的方式做:-)

票数 2
EN

Stack Overflow用户

发布于 2017-03-31 05:02:19

最近我也有同样的想法。有与此Is it OK to use Gson instance as a static field in a model bean (reuse)?相关的旧线程。简单地总结一下GSON实例应该是线程安全的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43132443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档