2016-02-11 26 views
1

我使用Jackson在Java中序列化對象。我建立一個對象,現在我想獲得一個「無根」 JSON,如:在Jackson中將對象序列化爲JSON而沒有根密鑰

{ 
    "requestHeader": { 
     "specVersion":"1.2", 
     "customerId":"123123" 
    }, 
    "someThingElse": "123" 
} 

這裏,requestHeadersomeThingElse在同一個根目錄下。

使用此代碼,我不得不設置一個關鍵點:

import com.fasterxml.jackson.databind.ObjectMapper; 
... 
ObjectNode response = mapper.createObjectNode(); 
response.set("unwantedRootKey", data); 

這會導致額外的根級別,我不想要的。

{ 
    "unwantedRootKey": { 
      "requestHeader": { 
       "specVersion":"1.2", 
       "customerId":"123123" 
      }, 
      "someThingElse": "123" 
    } 
} 

如何,我可以添加以串行方式中的數據,因此不產生一棵樹,但林這麼說? (我可以砍,最後一個字符串,但也...)

+1

'response.set('requestheader',data.requestheader); response.set('somethingelse','123)'? –

+0

@raolsson沒有正確理解這個問題。如果你能告訴我你爲什麼要做response.set(「unwantedRootKey」,數據),我將能夠回答這個問題。 –

+0

與您遇到的問題無關,使用'com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode()'將是創建新的ObjectNode引用來處理而不是通過ObjectMapper的更直接的方法 – whaley

回答

0

感謝馬克·B的評論,我嘗試了很明顯的:只需設置多次進入根級別:

ObjectMapper mapper = new ObjectMapper(); 
ObjectNode response = mapper.createObjectNode(); 
response.set("requestHeader", mapper.valueToTree(data.getRequestHeader())); 
response.set("someThingElse", mapper.valueToTree(data.getSomethingElse())); 

我太困今天錯過了森林只看到樹...