在Jackson中没有根密钥的情况下将对象序列化为JSON

时间:2016-02-11 19:13:38

标签: java json jackson

我使用Jackson在Java中序列化对象。我构建了一个对象,现在我希望得到一个“无根”的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 个答案:

答案 0 :(得分:0)

感谢Marc B的评论,我尝试了很明显:只需在根级别设置多个条目:

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

我今天太困了,因为只看到树而错过了森林......