jackson 将数组节点放入对象节点

pu82cl6c  于 2022-11-08  发布在  其他
关注(0)|答案(2)|浏览(209)

我想按照下面的格式准备一个对象。对象节点中的对象数组。我正在按照下面的格式尝试。
{ [ {数组节点对象1},{数组节点对象2},{数组节点对象3} ] }

ArrayNode arrayNode = new ObjectMapper().createArrayNode();
arrayNode.add(arrayNodeObject1);
arrayNode.add(arrayNodeObject2);
arrayNode.add(arrayNodeObject3);

用上面的代码,我可以得到如下所示的对象数组。

[{arrayNodeObject1}, {arrayNodeObject2}, {arrayNodeObject3}]

现在,我想把上面的ArrayNode放到一个ObjectNode中。请给出建议。还有,我如何从ObjectNode中读回ArrayNode。
如果我能有一个指向ArrayNode的标签,就很容易得到arrayNode。

kxe2p93d

kxe2p93d1#

我认为如果你想有标签的话,Map是一种方法:

Map arrayNodeObjectMap = new HashMap<String, ArrayNode>();
arrayNodeMap.put("labelForArrayNodeObject1", arrayNodeObject1);
arrayNodeMap.put("labelForArrayNodeObject2", arrayNodeObject2);
arrayNodeMap.put("labelForArrayNodeObject3", arrayNodeObject3);
ddhy6vgd

ddhy6vgd2#

下面是我如何使用流:

ArrayNode arrayNode = mapper.createArrayNode();
arrayList.stream()
    .forEach(id -> arrayNode.add(id));
objectNode.set("Key", arrayNode);

或者以您为例:

ArrayNode arrayNode = new ObjectMapper().createArrayNode();
arrayNode.add(arrayNodeObject1);
arrayNode.add(arrayNodeObject2);
arrayNode.add(arrayNodeObject3);
objectNode.set("Key", arrayNode);

若要撷取此项目,您可以用途:
objectNode.get("Key")

备注

  • set()已取代ObjectNode上的put(),以取代put()的使用,其中使用this链接。set()会在新增/传回属性值后传回节点

相关问题