如何从Java中的JSON字符串中删除元素?

时间:2019-10-02 02:13:37

标签: java json

我有一个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 个答案:

答案 0 :(得分: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();
        }

希望这对您有所帮助。

答案 1 :(得分:0)

下面是带有不同流行库的示例代码,以实现您想要的目标,如下所示:

杰克逊

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());