Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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 将org.json.JSONArray插入jackson对象节点_Java_Json_Jackson - Fatal编程技术网

Java 将org.json.JSONArray插入jackson对象节点

Java 将org.json.JSONArray插入jackson对象节点,java,json,jackson,Java,Json,Jackson,我在尝试将JSONArray插入JacksonObjectNode时遇到了麻烦。这就是我想做的: 这感觉真的很傻,但实际上什么是最好的方法呢 编辑:我很抱歉,因为我没有提到一个重要的点,那就是我必须在构建完ObjectNode之后对其进行序列化,所以使用putPOJO()是不可能的。我更喜欢的方法是。您可以使用putPOJO()方法来执行此操作。例如: // Incoming org.json.JSONArray. JSONArray incomingArray = new JSONArray

我在尝试将
JSONArray
插入Jackson
ObjectNode
时遇到了麻烦。这就是我想做的:

这感觉真的很傻,但实际上什么是最好的方法呢

编辑:我很抱歉,因为我没有提到一个重要的点,那就是我必须在构建完
ObjectNode
之后对其进行序列化,所以使用
putPOJO()
是不可能的。

我更喜欢的方法是。您可以使用
putPOJO()
方法来执行此操作。例如:

// Incoming org.json.JSONArray.
JSONArray incomingArray = new JSONArray("[\"Value1\",\"Value2\"]");

ObjectMapper objectMapper = new ObjectMapper();
ObjectNode payload = objectMapper.createObjectNode();
// Adds the JSONArray node to the payload as POJO (plain old Java object).
payload.putPOJO("array", incomingArray);

System.out.println(objectMapper.writeValueAsString(payload));
可以找到Javadoc

注意:这是我使用
readTree()
提交的上一个实现:


放置
payload.put(“array”,jsonArray.toString())有什么问题
?它不只是将它作为字符串而不是json数组放在
“array”
字段中吗?!确切地它将存储JSONArray的字符串表示形式。好的,但我需要
“array”
字段是实际的json数组,而不是字符串。。。我不认为这是等价的,对吧?!然后使用
putPOJO
方法:
payload.putPOJO(“array”,jsonArray)。实际上,使用这个方法,我得到了一个异常,
没有为org.json.JSONArray类找到序列化程序
。问题是,一旦我完成构建有效负载,我就必须将其序列化。我认为正确的答案是您之前给出的。@MatteoZaccagnino:我对
putPOJO()
没有任何问题,但我也发布了
readTree()
实现,以防其他人遇到类似问题。如果您使用
putPOJO()
,然后尝试序列化创建的
ObjectNode
,您将得到上述异常,因为jackson不知道如何序列化
JSONArray
的实例。无论如何,我标记了你的答案,因为它包含两个答案。
// Incoming org.json.JSONArray.
JSONArray incomingArray = new JSONArray("[\"Value1\",\"Value2\"]");

ObjectMapper objectMapper = new ObjectMapper();
ObjectNode payload = objectMapper.createObjectNode();
// Adds the JSONArray node to the payload as POJO (plain old Java object).
payload.putPOJO("array", incomingArray);

System.out.println(objectMapper.writeValueAsString(payload));
// Incoming org.json.JSONArray.
JSONArray incomingArray = new JSONArray("[\"Value1\",\"Value2\"]");

ObjectMapper objectMapper = new ObjectMapper();
ObjectNode payload = objectMapper.createObjectNode();
// Reads the JSON array into a Jackson JsonNode.
JsonNode jsonNode = objectMapper.readTree(incomingArray.toString());
// Sets the Jackson node on the payload.
payload.set("array", jsonNode);

System.out.println(objectMapper.writeValueAsString(payload));