Я вижу людей, использующих toString()
для получения текстового значения JsonNode, когда это ObjectNode
вместо ValueNode
, особенно когда содержимое некоторого узла также является строкой JSON;мы можем создать еще один JsonNode для более глубокого проникновения во внутреннее дерево.
JsonNode shippingInfo = null;
JsonNode brand = null;
ArrayNode included = (ArrayNode)details.get("included");
for (JsonNode node: included) {
if ("offers".equals(node.get("type").asText()) &&
orderOffer.getOfferId().toString().equals(node.get("id").asText())) { // asText() will return empty string "", because it is not ValueNode.
shippingInfo = node.get("attributes").get("shippingSellerMethod");
} else if ("brands".equals(node.get("type").asText())) {
brand = node.get("attributes");
}
}
Я понимаю, что это полезно, но безобразно.Я хочу знать, есть ли другой способ Джексона, чтобы получить значение, не всегда get(node_name).toString()
.