2013-04-25 110 views
1

我有一個對象,如:序列化,其具有的JSON格式字符串JSON對象

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。出於性能考慮,我無法反序列化,然後序列化字段。

+2

如果您使用傑克遜,你可以使用'@場上(作爲一個答案刪除JsonRawValue'註釋爲您正在使用GSON,但以防萬一)。 – nullPainter 2013-04-25 06:47:41

+0

感謝@nullPainter!這正是我想要的!註釋工作正常。 – 2013-04-26 09:11:15

回答

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>; 
相關問題