一尘不染

使用Jackson JsonNodeFactory的最佳方法

java

我正在使用Jackson来构建自定义JSON对象。这是正确的方法吗?

它似乎工作良好(并且输出正确),但是我可能会错过使用JsonNodeFactory的方式。该对象是否像我在这里一样经过传递?

JsonNodeFactory factory = JsonNodeFactory.instance;
ObjectNode dataTable = new ObjectNode(factory);
ArrayNode aaData = new ArrayNode(factory);

for (PkgLoad pkgLoad : pkgLoadList) {
    ObjectNode row = new ObjectNode(factory);
    row.put("ounces", pkgLoad.ounces);
    row.put("revolutions", pkgLoad.revolutions);
    aaData.add(row);
}

dataTable.put("aaData", aaData);

阅读 728

收藏
2020-12-03

共1个答案

一尘不染

这是可行的,尽管意图是创建实例的是工厂。但最常见的是,您只需使用ObjectMapper访问所有内容,例如:

ObjectMapper mapper = new ObjectMapper();
ObjectNode dataTable = mapper.createObjectNode();
ArrayNode aa = dataTable.putArray("aaData");

分离JsonNodeFactory的主要原因是允许您创建自定义节点类型(通常是标准实例的子类)。然后将ObjectMapper配置为使用其他工厂。为了方便起见,ArrayNode和ObjectNode确实引用了工厂实例,该实例与“
putArray”和其他需要创建新节点的方法一起使用。

2020-12-03