首页 > 解决方案 > 在 Java 中将动态 JSON 解析为对象

问题描述

我有一个奇怪的 JSON,它有动态对象名称。像这样的东西

{
    "Sample_01": {
        "class": "Tenant",
        "A1": {
            "class": "Application",
            "template": "http"
        }
    },
    "Sample_02": {
        "class": "Tenant",
        "A2": {
            "class": "Application",
            "template": "http"
        }
    }
}

这里Sample_01Sample_02是动态的,这个值可以是任何东西。同样来自A1A1attr。

现在我如何将它解析成一个Java Object类?

我正在使用GSON.

也可以使用任何其他方式,只要它是在 Java(Spring) 中

标签: javajsongson

解决方案


您可以JSONObjecthttp://central.maven.org/maven2/org/json/json/20180813/json-20180813.jar使用

public static void main(String[] args) {
        String input="{\r\n" + 
                "    \"Sample_01\": {\r\n" + 
                "        \"class\": \"Tenant\",\r\n" + 
                "        \"A1\": {\r\n" + 
                "            \"class\": \"Application\",\r\n" + 
                "            \"template\": \"http\"\r\n" + 
                "        }\r\n" + 
                "    },\r\n" + 
                "    \"Sample_02\": {\r\n" + 
                "        \"class\": \"Tenant\",\r\n" + 
                "        \"A2\": {\r\n" + 
                "            \"class\": \"Application\",\r\n" + 
                "            \"template\": \"http\"\r\n" + 
                "        }\r\n" + 
                "    }\r\n" + 
                "}";

        JSONObject jsonObject = new JSONObject(input);  


        Set<String> keys =jsonObject.keySet();
        for(String key:keys) {
            System.out.println("Key :: "+key +", Value :: "+jsonObject.get(key));;
        }
    }

如果您再次想解析 or 的值或Sample_01检查 jsonObject 的实例,并重复循环Sample_02Sample_XXif(jsonObject.get(key) instanceof JSONObject)


推荐阅读