我正在使用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”和其他需要创建新节点的方法一起使用。