Java 在Jackson中不使用根键将对象序列化为JSON
我使用Jackson在Java中序列化对象。我构建了一个对象,现在我想得到一个“无根”JSON,比如:Java 在Jackson中不使用根键将对象序列化为JSON,java,json,jackson,Java,Json,Jackson,我使用Jackson在Java中序列化对象。我构建了一个对象,现在我想得到一个“无根”JSON,比如: { "requestHeader": { "specVersion":"1.2", "customerId":"123123" }, "someThingElse": "123" } 这里,requestHeader和someThingElse位于同一根级别 使用此代码,我被迫设置一个键: import com.fasterxml.ja
{
"requestHeader": {
"specVersion":"1.2",
"customerId":"123123"
},
"someThingElse": "123"
}
这里,requestHeader
和someThingElse
位于同一根级别
使用此代码,我被迫设置一个键:
import com.fasterxml.jackson.databind.ObjectMapper;
...
ObjectNode response = mapper.createObjectNode();
response.set("unwantedRootKey", data);
这会导致额外的根级别,我不想要
{
"unwantedRootKey": {
"requestHeader": {
"specVersion":"1.2",
"customerId":"123123"
},
"someThingElse": "123"
}
}
如何以串行方式添加数据,从而不创建树,而是可以说创建林?(我可以切掉最后一个字符串,但很好…多亏了Marc B的评论,我尝试了显而易见的方法:只需在根级别设置多个条目:
ObjectMapper mapper = new ObjectMapper();
ObjectNode response = mapper.createObjectNode();
response.set("requestHeader", mapper.valueToTree(data.getRequestHeader()));
response.set("someThingElse", mapper.valueToTree(data.getSomethingElse()));
今天我太困了,因为只看到了树而错过了森林…多亏了Marc B的评论,我尝试了显而易见的方法:只需在根级别设置多个条目:
ObjectMapper mapper = new ObjectMapper();
ObjectNode response = mapper.createObjectNode();
response.set("requestHeader", mapper.valueToTree(data.getRequestHeader()));
response.set("someThingElse", mapper.valueToTree(data.getSomethingElse()));
我今天太困了,因为只看到树而错过了森林…
response.set('requestheader',data.requestheader);response.set('somethingelse','123)
?@raolsson没有正确理解问题。如果您能告诉我为什么要执行response.set(“unwantedRootKey”,data)?与您遇到的问题无关,请使用com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode()
将是创建新的ObjectNode引用以进行处理的更直接的方法,而不是通过ObjectMapperresponse.set('requestheader',data.requestheader);response.set('somethingelse','123)
?@raolsson没有正确理解问题。如果您能告诉我为什么要执行response.set(“unwantedRootKey”,data)?与您遇到的问题无关,请使用com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode()
将是创建新的ObjectNode引用的更直接的方法,而不是通过ObjectMapper