Java JsonNode удалить один контейнер посередине - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть следующий Json

{
    "Parent": {
        "pk1": "pv1",
        "pk2": "pv2",
        "Child": {
            "*": {
                "ck1": "cv1",
                "ck2": "cv2"
            }
        }
    }
}

Теперь я хочу удалить "*": {}, но сохранить его содержимое. Ожидаемый результат такой:

{
    "Parent": {
        "pk1": "pv1",
        "pk2": "pv2",
        "Child": {
            "ck1": "cv1",
            "ck2": "cv2"
        }
    }
}

Как я могу использовать Java Jackson для достижения этой цели?

1 Ответ

0 голосов
/ 01 сентября 2018

См. Манипуляции ниже

    ObjectMapper mapper = new ObjectMapper();
    String file = "src/main/resources/yourjson.json";
    JsonNode object = mapper.readTree(new File(file));
    ObjectNode child = (ObjectNode) object.path("Parent").path("Child");
    JsonNode star = child.path("*");
    child.remove("*");
    Iterator<String> startFieldNames = star.fieldNames();
    while (startFieldNames.hasNext()) {
        String startFieldName = startFieldNames.next();
        child.set(startFieldName, star.get(startFieldName));
    }
    System.out.println(mapper.writer().withDefaultPrettyPrinter().writeValueAsString(object));
...