如何在Java中从JSON字符串中删除一个元素?

3

我有一个JSON字符串,需要使用Java代码从中删除一个元素。感谢您的帮助。

例子:

尝试过数组等方法,但没有成功。

输入:需要删除图片

{"widget": {
    "debug": "on",
    "window": {
        "title": "Sample Konfabulator Widget",
        "name": "main_window",
        "width": 500,
        "height": 500
    },
    "image": { 
        "src": "Images/Sun.png",
        "name": "sun1",
        "hOffset": 250,
        "vOffset": 250,
        "alignment": "center"
    },
    "text": {
        "data": "Click Here",
        "size": 36,
        "style": "bold",
        "name": "text1",
        "hOffset": 250,
        "vOffset": 100,
        "alignment": "center",
        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
    }
}}   

输出:

{"widget": {
    "debug": "on",
    "window": {
        "title": "Sample Konfabulator Widget",
        "name": "main_window",
        "width": 500,
        "height": 500
    },
    "text": {
        "data": "Click Here",
        "size": 36,
        "style": "bold",
        "name": "text1",
        "hOffset": 250,
        "vOffset": 100,
        "alignment": "center",
        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
    }
}}

2
使用JSON解析器,然后解析JSON文本,根据需要修改数据,再将其格式化为JSON文本。 - Andreas
在Java中处理JSON时,请使用Jackson或Gson。不要试图直接修改字符串,因为这样做是不可维护的。 - Amit Yadav
2个回答

4

以下是使用不同流行库实现所需功能的示例代码:

Jackson

ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readValue(jsonStr, JsonNode.class);
((ObjectNode) node.get("widget")).remove("image");
System.out.println(node.toString());

Gson

Gson gson = new Gson();
JsonElement jsonObj= gson.fromJson(jsonStr, JsonElement.class);
jsonObj.getAsJsonObject().get("widget").getAsJsonObject().remove("image");
System.out.println(jsonObj.toString());

Jettison

JSONObject jsonObj = new JSONObject(jsonStr);
jsonObj.getJSONObject("widget").remove("image");
System.out.println(jsonObj.toString());

0

安装并导入这个包:

import org.json.*;

使用以下代码:

 try {
            String src = "{\"widget\": {\n"
                    + "    \"debug\": \"on\",\n"
                    + "    \"window\": {\n"
                    + "        \"title\": \"Sample Konfabulator Widget\",\n"
                    + "        \"name\": \"main_window\",\n"
                    + "        \"width\": 500,\n"
                    + "        \"height\": 500\n"
                    + "    },\n"
                    + "    \"image\": { \n"
                    + "        \"src\": \"Images/Sun.png\",\n"
                    + "        \"name\": \"sun1\",\n"
                    + "        \"hOffset\": 250,\n"
                    + "        \"vOffset\": 250,\n"
                    + "        \"alignment\": \"center\"\n"
                    + "    },\n"
                    + "    \"text\": {\n"
                    + "        \"data\": \"Click Here\",\n"
                    + "        \"size\": 36,\n"
                    + "        \"style\": \"bold\",\n"
                    + "        \"name\": \"text1\",\n"
                    + "        \"hOffset\": 250,\n"
                    + "        \"vOffset\": 100,\n"
                    + "        \"alignment\": \"center\",\n"
                    + "        \"onMouseUp\": \"sun1.opacity = (sun1.opacity / 100) * 90;\"\n"
                    + "    }\n"
                    + "}}   ";
            JSONObject obj = new JSONObject(src);
            obj.getJSONObject("widget").remove("image");
            System.out.println("obj: " + obj);
        } catch (JSONException ex) {
            ex.printStackTrace();
        }

希望这能对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接