Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Jackson中不使用根键将对象序列化为JSON_Java_Json_Jackson - Fatal编程技术网

Java 在Jackson中不使用根键将对象序列化为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

我使用Jackson在Java中序列化对象。我构建了一个对象,现在我想得到一个“无根”JSON,比如:

{
    "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引用以进行处理的更直接的方法,而不是通过ObjectMapper
response.set('requestheader',data.requestheader);response.set('somethingelse','123)
?@raolsson没有正确理解问题。如果您能告诉我为什么要执行response.set(“unwantedRootKey”,data)?与您遇到的问题无关,请使用
com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode()
将是创建新的ObjectNode引用的更直接的方法,而不是通过ObjectMapper