繁体   English   中英

如何使用java从json对象数组中删除json键值对

[英]How to remove json key value pair from json object array using java

我想从使用 jsonObject 存储的 JSON 中删除 "status": "new"

        JSONParser parser = new JSONParser();
        Object obj = parser.parse(responseStr);
        jsonObject =  (JSONObject) obj;

JSON 结构——

{"actionName": "test"
"Data": [{

    "isActive": true,
    "Id": "1358",
    "status": "new"
}],

}

新的 JSON 应该是这样的 -

{"actionName": "test"
"Data": [{

    "isActive": true,
    "Id": "1358"
    
}],

}

我试过 jsonObj.remove("status") ,但没有运气。

jsonObj.getJSONArray("Data").get(0).remove("status);

#Updated 代码分解:

JSONObject obj= (JSONObject) jsonObj.getJSONArray("Data").get(0);
   obj.remove("status");

   JSONArray newArr=new JSONArray();
   newArr.put(obj);
   jsonObj.put("Data", newArr);

它应该可以完成您的工作,但尚未测试。 首先,您的Data是 JSONArray,通过jsonObj.getJSONArray("Data")检索,然后使用get(0) [假设,您的数组将只包含一个条目,就像您的示例] 最后,通过remove删除该键方法。

您需要迭代Data属性,它是一个JSON Array并为每个项目status键删除。

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

import java.io.File;
import java.io.FileReader;

public class JsonSimpleApp {
    public static void main(String[] args) throws Exception {
        File jsonFile = new File("./resource/test.json").getAbsoluteFile();

        JSONParser parser = new JSONParser();
        JSONObject root = (JSONObject) parser.parse(new FileReader(jsonFile));
        JSONArray dataArray = (JSONArray) root.get("Data");
        dataArray.forEach(item -> {
            JSONObject object = (JSONObject) item;
            object.remove("status");
        });

        System.out.println(root);
    }
}

上面的代码打印:

{"Data":[{"Id":"1358","isActive":true}],"actionName":"test"}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM