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
插入JacksonObjectNode
时遇到了麻烦。这就是我想做的:
这感觉真的很傻,但实际上什么是最好的方法呢
编辑:我很抱歉,因为我没有提到一个重要的点,那就是我必须在构建完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));