Удалить один JSON-данные из файла JSON - PullRequest
0 голосов
/ 30 октября 2018

мой JSON:

{
  "errorMessages" : [ {
    "key" : "QUIESCE_FAILURE",
    "code" : "12345",
    "description" : "User already exists aaa",
    "reason" : "Username {user} is already added aaa",
    "resolution" : "Please provide a different username aaa",
    "more_information" : "more info aaa",
    "type" : "error aaa"
  }, {
    "key" : "DUPLICATE_USERS",
    "code" : "3114587",
    "description" : "Failed to quiesce database(s)",
    "reason" : "Database {database} on host {host} is not accessible",
    "resolution" : "Please check that the database is accessible",
    "more_information" : "kkkk",
    "type" : "error"
  } ]
}

Я хочу удалить JSON с кодом 3114587, используя Джексон.

Могу ли я получить какие-либо предложения?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Я полагаю, у вас есть содержимое JSON как File объект. Если у вас есть как URL, InputStream, Reader или String, затем просто измените приведенный ниже код, выбрав другой метод readValue.

С классами из пакетов com.fasterxml.jackson.databind и com.fasterxml.jackson.databind.node Вы можете достичь своей цели прямым путем. Прочитайте ввод JSON, найдите и удалите элемент массива и запишите вывод JSON:

File file = ...;
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);  // for pretty print
JsonNode jsonNode = objectMapper.readValue(file, JsonNode.class);
ArrayNode errorMessages = (ArrayNode) jsonNode.get("errorMessages");
for (int i = 0; i < errorMessages.size(); i++) {
    ObjectNode errorMessage = (ObjectNode) errorMessages.get(i);
    String code = errorMessage.get("code").asText();
    if (code.equals("3114587")) {
        errorMessages.remove(i);  // remove the element
    }
}
objectMapper.writeValue(System.out, jsonNode);
0 голосов
/ 30 октября 2018

delete json[key];

Сохраните ваш объект Json под именем переменной json. Найдите ключ, который вы хотите удалить, и он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...