Удалить определенный массив в JSONArray с помощью JackSon - PullRequest
2 голосов
/ 05 ноября 2019

У меня есть что-то вроде этого:

    { 
  "Person": {
    "Info": [{
      "name":"Becky",
      "age": 14
      }
    ]
  },
  "FruitsList": {
    "Fruits": [
      {
        "name": "avocado",
        "organic": true
      },
      {
        "name": "mango",
        "organic": true
      }
    ]
  },
  "VegetablesList": {
    "Vegetables": [
      {
        "name": "brocoli",
        "organic": true
      },
      {
        "name": "lettuce",
        "organic": true
      }
    ]
  }
}

Я хочу удалить массив FruitsList и VegetablesList или, возможно, даже массив Person. Что-то вроде этого.

{ 
  "Person": {
    "Info": [
      "name": "Becky",
      "age": 14
    ]
   },
  "Fruits": [
    {
      "name": "avocado",
      "organic": true
    },
    {
      "name": "mango",
      "organic": true
    }
  ],
  "Vegetables": [
    {
      "name": "brocoli",
      "organic": true
    },
    {
      "name": "lettuce",
      "organic": true
    }
  ]
}

Я не совсем уверен, какие методы использовать в библиотеках JACKSON для получения правильного результата. Я был бы очень признателен за вашу помощь. Заранее спасибо.

1 Ответ

1 голос
/ 05 ноября 2019

Простой способ - сначала удалить узлы FruitsList и VegetablesList из корневого узла и добавить к нему Fruits и Vegetables следующим образом:

ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(jsonStr);
JsonNode personNode = rootNode.get("Person");
JsonNode fruitsListNode = rootNode.get("FruitsList");
JsonNode vegetablesList = rootNode.get("VegetablesList");
((ObjectNode) rootNode).remove("FruitsList");
((ObjectNode) rootNode).remove("VegetablesList");
((ObjectNode) rootNode).put("Fruits", fruitsListNode.get("Fruits"));
((ObjectNode) rootNode).put("Vegetables", vegetablesList.get("Vegetables"));

System.out.println(rootNode.toString());

BTWКак я уже говорил в комментарии OP, ваша строка JSON неверна . Действительный должен быть "Person": {"Info": {...}},....

...