private static void post(JsonNode node, Tree tree) {
Iterator<Entry<String, JsonNode>> iterator = node.fields();
while (iterator.hasNext()) {
Entry<String, JsonNode> entry = iterator.next();
String name = entry.getKey();
JsonNode value = entry.getValue();
if (value.isObject()) {
if (tree.hasProperty(name)) {
tree.removeProperty(name);
}
Tree child = tree.getChild(name);
if (!child.exists()) {
child = tree.addChild(name);
}
post(value, child);
} else {
Tree child = tree.getChild(name);
if (child.exists()) {
child.remove();
}
if (value.isNull()) {
tree.removeProperty(name);
} else if (value.isBoolean()) {
tree.setProperty(name, value.asBoolean());
} else if (value.isLong()) {
tree.setProperty(name, value.asLong());
} else if (value.isDouble()) {
tree.setProperty(name, value.asDouble());
} else if (value.isBigDecimal()) {
tree.setProperty(name, value.decimalValue());
} else {
tree.setProperty(name, value.asText());
}
}
}
}