我正在使用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);

最佳答案

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

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

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

关于java - 使用Jackson JsonNodeFactory的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6311921/

10-12 13:16