我有一个像这样的对象:
public class Foo{
public String f1="[{\"jsonField\":\"something\"},{\"jsonField\":\"something\"}]";
}
Gson将其序列化为:
{"f1":"[{\"jsonField\":\"something\"},{\"jsonField\":\"something\"}]"}
f1字段被序列化为字符串。显然,该字段是一个格式良好的json格式字符串。如何将字段序列化为jso数组,如下所示:
{"f1":[{"jsonField":"something"},{"jsonField":"something"}]}
PS。出于性能考虑,我无法反序列化然后序列化该字段。
答案 0 :(得分:0)
Gson将您的字符串字段序列化为字符串。这很正常。但是,如果你的字段是List<String>
,Gson会给你:
{"f1":["jsonField:something","jsonField:something"]}
如果它是一个列表,其中有一个名为jsonField
的字段,你就会得到你真正想要的东西。
这是Gson序列化对象的隐含方式。如果您不喜欢它,则需要实现自己的TypeAdapter
并在构建器中将其注册到Gson。
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(MyObject.class, new SomethingGsonAdapter());
Gson gson = builder.create()
你需要定义:
public class SomethingGsonAdapter implements JsonDeserializer<DataItem>, JsonSerializer<DataItem>;