2013-04-10 58 views
3

我想從客戶端發送類似這樣的休息服務發送JSON使用REST服務(州/傑克遜)

 
jsonObj = 
{ 
    "info" : { 
     "field1" : "val1".. 
..... 
     "fieldN" : "valN".. 
    } 
} 

而且我不知道我該怎麼處理這個使用任意鍵值使用

 Jersey and Jackson in Java

REST服務,我不希望創建一個新的信息類使用性質傑克遜用N場,因爲他們要隨時更改。我只想抓住jsonObject內部的jsonObject並以JsonObject的形式對其進行操作。

有什麼想法?

回答

6

假設您有一個正在讀取結果的根對象,您可以在您的jsonObj中將docInfo定義爲Map<String, Object>。這將可能的工作,但我不能給它一個去現。

如果沒有根對象,你可以只使用一個Map<String, Object>作爲根對象,並從那裏用它玩。該地圖可以包含嵌套json對象的其他地圖。

+0

是,地圖是要走的路。 Upvoted。 – Perception 2013-04-10 22:29:17

+0

那工作...謝謝:) – AnujKu 2013-04-10 22:53:15

2

是,使用一個包裝對象具有嵌入的地圖,作爲@digitialjoel建議。這是一個具體的例子:

class DocInfo { 
    private Map<String, Object> docInfo; 

    public DocInfo() { 
     super(); 
    } 

    public DocInfo(final Map<String, Object> docInfo) { 
     super(); 
     this.docInfo = docInfo; 
    } 

    // Getters, setters 
} 

final Map<String, Object> data = new LinkedHashMap<String, Object>(4); 
data.put("field1", "value1"); 
data.put("field2", "value2"); 
data.put("field3", "value3"); 
data.put("field4", "value4"); 
final DocInfo info = new DocInfo(data); 
final ObjectMapper mapper = new ObjectMapper(); 
final String json = mapper.writeValueAsString(info); 
System.out.println(json); 

輸出:

{ 「DOCINFO」:{ 「字段1」: 「VALUE1」, 「FIELD2」: 「VALUE2」, 「字段3」: 「值3」 「字段4」: 「VALUE4」}}