2015-04-26 55 views
0

我正在使用cassandra作爲DB並將用戶地址存儲爲"address"字段User對象中的JSON。將json存儲爲對象的字符串屬性作爲JSON對象作爲客戶端

class User { 
    private long id; 
    private String name; 
    private String address; 
} 

然後在DB列在用戶列如下

id | name | address 
================================ 
12345| jhon | {"hno":"12-10-46/3","street":"lavella road","city":"begaluru"} 

但是,當我從查詢DB User對象,並返回一個REST API我看到傑克遜轉換用戶對象JSON的結果。但我觀察到"address"字段爲字符串類型而不是另一個JSON對象。但我希望「地址」應該被解釋爲客戶端的JSON對象。

我怎麼能說傑克遜將內部字符串屬性轉換爲JSON呢?

回答

2

我想你應該在地址欄中使用註解@JsonRawValue。

@JsonRawValue:可用於指定每個屬性標記物 的屬性的值是要被包括在序列化「」準確「」 原樣,沒有轉義或裝飾 - 用於嵌入有用 預先序列JSON(或任何數據格式被使用)在輸出

https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations

+0

這也適用於JSON包括JSOn存儲爲字符串? – Pokuri

0

它被當作字符串,因爲它是一個字符串。您需要將其轉換爲對象。不流利在Java中我設法找到這段代碼使用的JavaScript引擎EVAL串入一個對象,同一個瀏覽器會做:

ScriptEngineManager manager = new ScriptEngineManager(); 
ScriptEngine engine = manager.getEngineByName("js");   
Object result = engine.eval([Your Address String Variable Here]); 

然後結果應該從派生的對象字符串。

希望這會有所幫助。