2016-12-30 63 views
0

我將一個對象編組爲一個對象轉換爲具有JSON的String屬性(String actionsJSON)的JSON。這導致JSON被轉義,所以我使用Jackson註解@JsonRawValue來獲取該屬性中的JSON不會被轉義。的問題是,當我解組它放回一個String屬性(的逆過程)傑克遜處理JSON(其具有JSON陣列)和引發錯誤作爲java類屬性僅僅是一個字符串:Jackson:如何將包含JSON內容的屬性解壓爲原始字符串

Can not deserialize instance of java.lang.String out of START_ARRAY token 

我怎樣才能讓傑克遜只複製該屬性的內容而不嘗試處理它,所以我在String屬性中有JSON代碼,就像我在原始對象中那樣?

(我已在目標類嘗試@JsonRawValue,... @JsonSerialize(使用= ToStringSerializer.class,如= StringSerializer.class),但錯誤依然存在。

+0

你產生actionsJSON'的'內容?任何機會,你可以把它作爲一個'Object',讓傑克遜序列化? – GuiSim

+0

我將它手動生成爲動態內容而不是rel這就是我需要@JsonRawValue的原因,所以在編組時,Jackson不會將其重新轉換爲JSON兩次(轉義它)。這個問題並不是真正的序列化,但是當我將它反序列化回String屬性。 – icordoba

+0

@icordoba問題是@JsonRawValue僅用於序列化,而不是反序列化。使用Object而不是String來讓Jackson序列化(和反序列化)將解決這個問題。 – GuiSim

回答