gpt4 book ai didi

java - 如何覆盖包含 JSONArray 的 JSONObject 中的值?

转载 作者:行者123 更新时间:2023-12-01 18:13:49 26 4
gpt4 key购买 nike

所以我有一个如下所示的 JSON 数据。但我需要在一个特定场景和一个特定元素(“iCalstate”)中反转其状态。

例如,如果它是 true,则应该覆盖它 false。覆盖特定元素后,它应该将此 json 类型写入名为 test.json 的文件。

{"scene": [
{
"id": 0,
"element": [
{"iCalstate": "false"},
{"iCalstate": "false"}
]
},
{
"id": 1,
"element": [
{"iCalstate": "false"},
{"iCalstate": "false"}
]
},
{
"id": 2,
"element": [
{"iCalstate": "false"},
{"iCalstate": "false"}
]
}
]}

到目前为止我尝试过的:我已经制定了获取 JSONObject 和 JSONArrays 的方法,我尝试创建一个 if 来反转值(它有效)。我没有管理的事情是在特定的 sceneindex 和 elemindex 上反转它 --> 任何帮助将不胜感激

        int sceneindex = 0;
int elemindex = 0;

JSONObject json = new JSONObject();
JSONArray scene = new JSONArray();
JSONArray element = new JSONArray();
JSONArray relement = datain.getIcalSettingsElement(sceneindex); //gets the element from the "olf"

try {
for (int i = 0; i < 1; i++) {
json.put("scene", scene);

JSONObject node = new JSONObject();
scene.put(node);
node.put("id", i);
node.put("element", element);
}
for (int ii = 0; ii < 3; ii++) {
if (ii == elemindex) {
JSONObject enode = new JSONObject();
String invwrite = "";
if (relement.getJSONObject(ii).getString("iCalstate").equals("true")) {
invwrite = "false";
} else if (relement.getJSONObject(ii).getString("iCalstate").equals("false")) {
invwrite = "true";
}
enode.put("iCalstate", invwrite);
element.put(enode);
} else {
JSONObject enode = new JSONObject();
String write = relement.getJSONObject(ii).getString("iCalstate");
enode.put("iCalstate", write);
element.put(enode);
}
}

相反,我得到这个它应该只写入第一个元素,其中 id 为 0,但它写入每个元素:

{"scene": [
{
"id": 0,
"element": [
{"iCalstate": "true"},
{"iCalstate": "false"}
]
},
{
"id": 1,
"element": [
{"iCalstate": "true"},
{"iCalstate": "false"}
]
},
{
"id": 2,
"element": [
{"iCalstate": "true"},
{"iCalstate": "false"}
]
}
]}

最佳答案

为您的 JSON 创建相应的 POJO。并使用 ObjectMapper 映射 JSON 字符串并创建实例。然后,您可以在该实例上执行所需的操作。

关于java - 如何覆盖包含 JSONArray 的 JSONObject 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60410533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com