我想从此json文件using org.json
或com.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对象?
答案 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”]