Как удалить элемент из файла JSON в JAVA - PullRequest
0 голосов
/ 16 июня 2020

У меня есть файл JSON, который я хочу прочитать, перебрать его элементы, а затем удалить указанный c элемент (UserID) во всех объектах.

вот мой Json file:

[
  {
    "UserID": 1,
    "UserName": "rooter",
    "Password": "12345",
    "Country": "UK",
    "Email": "sac@gmail.com"
  },
  {
    "UserID": 2,
    "UserName": "binu",
    "Password": "123",
    "Country": "uk",
    "Email": "Binu@gmail.com"
  },
  {
    "UserID": 3,
    "UserName": "cal",
    "Password": "123",
    "Country": "uk",
    "Email": "cal@gmail.com"
  },
  {
    "UserID": 4,
    "UserName": "nera",
    "Password": "1234",
    "Country": "uk",
    "Email": "nera@gmail.com"
  }
]

Я также использовал org.json.simple Library для чтения файла, анализа его элементов и удаления одного из этих элементов, и вот код, который я использовал:

 public static void main(String[] args) throws Exception {


           JSONParser jsonparser = new JSONParser();
           try( FileReader reader = new FileReader("test.json"))
           {
            Object obj = jsonparser.parse(reader);
            ObjectMapper mapper = new ObjectMapper();
            JSONArray List = (JSONArray) obj;
            JsonNode root = mapper.readTree(reader);
            for (JsonNode jsonNode : root) {
                if (jsonNode instanceof ObjectNode) {
                    ObjectNode o = (ObjectNode) jsonNode;
                    o.remove("UserID");
                }
            }
            System.out.println(List);                          
        }
           catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ParseException e) {
                e.printStackTrace();
            }                    
     }

проблема в том, что он удаляет элемент, когда я его анализирую, но не изменяется в файле, однако я хочу удалить его из файла и сохранить обратно, вы знаете, как это сделать.

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Пожалуйста, проверьте указанный ниже код, который поможет вам решить вашу проблему:

public static void main(String[] args) throws Exception {

    JSONParser jsonparser = new JSONParser();
    try( FileReader reader = new FileReader("test.json"))
    {
        Object obj = jsonparser.parse(reader);
        JSONArray list = (JSONArray) obj;
        list.forEach(node->{
            ((JSONObject) node).remove("UserID");
        });
        System.out.println(list);
        saveAsJsonFile(list.toJSONString(),"test.json");
    }
    catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

private static void saveAsJsonFile(String seasonData, String fileName) {
    try (final FileOutputStream outputStreamSeason = new FileOutputStream(fileName)) {//fileName is absolute path of file (dir + filename)
        outputStreamSeason.write(seasonData.getBytes());
        System.out.println(fileName + " file save successfully.");
    } catch (Exception e) {
        e.printStackTrace();
    }
}
0 голосов
/ 16 июня 2020

Если JSONArray List содержит ваш отредактированный JSON, вы сможете получить из него JSON String, используя .toJSONString(), а затем записать его в свой файл с помощью средства записи файлов, например:

try {
        fw = new FileWriter("test.json");
        fw.write(list.toJSONString());
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        fw.close();  
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...