如何从json文件中删除json对象?

时间:2015-02-17 12:05:50

标签: java json

我想从此json文件using org.jsoncom.googlecode.json-simple删除年龄?

假设这个json对象在test.json文件中?

    {
        "age":100,
        "name":"mkyong.com",
        "messages":["msg 1","msg 2","msg 3"]
    }

删除文件后,test.json应为。

    {
        "name":"mkyong.com",
        "messages":["msg 1","msg 2","msg 3"]
    }

请告诉我如何从json文件中取出json对象?

3 个答案:

答案 0 :(得分:2)

从文件中读取并解析

Path file = Paths.get("test.json");
String input = new String(Files.readAllBytes(file), StandardCharsets.UTF_8);
JSONObject obj = (JSONObject) JSONValue.parse(input);

删除你不想要的密钥,注意JSONObject实现java.util.Map ...

obj.remove("age");

将字符串编码为字符串并写回文件

String output = JSONValue.toJSONString(obj);
Files.write(file, output.getBytes(StandardCharsets.UTF_8));

输入

{"age":100,"name":"mkyong.com","messages":["msg 1","msg 2","msg 3"]}

输出

{"name":"mkyong.com","messages":["msg 1","msg 2","msg 3"]}

答案 1 :(得分:2)

这将遍历Json对象的所有最顶层的键,并删除那些通过条件的键。

    try {
        JSONObject jsonObject = (JSONObject) new JSONParser().parse(new FileReader("test.json"));
        Set keys = jsonObject.keySet();
        Iterator iterator = keys.iterator();
        while (iterator.hasNext()) {
            String key = (String) iterator.next();          
            if (key.equals("age")) {
                System.out.println("REMOVING KEY:VALUE")
                System.out.println(key + ":" + jsonObject.get(key).toString());
                iterator.remove();
                jsonObject.remove(key);
            }
        }
        try (FileWriter file = new FileWriter("test.json")) { //store data
            file.write(jsonObject.toJSONString());
            file.flush();
        }
    } catch (IOException | ParseException ex) {
        System.out.println("Error: " + ex);
    }

iterator.remove()必须在jsonObject.remove(key)

之前

答案 2 :(得分:0)

我尝试了相同的方法,但是输出却不同。

JSONObject getJsonResp =(JSONObject)obj; getJsonResp.remove(“消息”)

原始JSON {“ name”:“ ALK”,“ messages”:[“ msg 1”,“ msg 2”,“ msg 3”],“ age”:100} 删除[“ msg 1”,“ msg 2”,“ msg 3”]