Gson:如何包含部分序列化对象?

时间:2017-05-29 09:15:58

标签: java gson

鉴于课程:

class Container<T> {
 T item;
 String type;
 Map<String,String> properties;

 public void setItem(T _item) {
  item = _item;
 }
}

我已将item在数据库中序列化为名称为serialized的字符串。这是Map<String,String>。  我不知道怎么说Gson这个变量已经被序列化了。   因此,当我使用Gson时,我首先对其进行反序列化,然后将其序列化回来

Container<Map <String, String>> t = new Container<>(<other parameters>);
Map <String, String> m = gson.fromJson(serialized, new TypeToken<Map<String,String>>(){}.getType())
t.setItem(m);
gson.toJson(t,  new TypeToken<Container<Map<String,String>>>() {}.getType());

这感觉效率低下。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我不确定这是可能的。您正在混合对象创建和序列化。

您可以做的是创建一个带有附加String参数的新构造函数,并反序列化该字符串以获取您的项目并自动设置它。即使使用参数化类型,这也应该是可能的。这样你就有2行代码而不是4行。