Java从嵌套的json中提取键值

Java从嵌套的json中提取键值,java,api,gson,rest-assured,Java,Api,Gson,Rest Assured,我有以下JSON,我正在尝试提取结果中的对象 { “状态”:正确, “结果”:{ “类型1”:{ “id”:“类型1” }, “类型2”:{ “id”:“类型2” } } } 期望输出为 type1,type2 我使用Gson进行序列化和反序列化。这些是使用Gson时应该执行的步骤 获取单独位于“results”内部的json对象的键 将其作为具有键和值的json对象获取 收集JSON的条目集 创建一个迭代器,以便以后可以提取密钥 以下是执行相同任务的代码: public static vo

我有以下JSON,我正在尝试提取结果中的对象

{
“状态”:正确,
“结果”:{
“类型1”:{
“id”:“类型1”
},
“类型2”:{
“id”:“类型2”
}
}
}
期望输出为

type1,type2

我使用Gson进行序列化和反序列化。

这些是使用Gson时应该执行的步骤

  • 获取单独位于“results”内部的json对象的键
  • 将其作为具有键和值的json对象获取
  • 收集JSON的条目集
  • 创建一个迭代器,以便以后可以提取密钥
  • 以下是执行相同任务的代码:

    public static void main(String[] args) throws Exception {
            
            String json = "{\r\n" + 
                    "   \"status\":true,\r\n" + 
                    "   \"results\":{\r\n" + 
                    "      \"type1\":{\r\n" + 
                    "         \"id\":\"type1\"\r\n" + 
                    "      },\r\n" + 
                    "      \"type2\":{\r\n" + 
                    "         \"id\":\"type2\"\r\n" + 
                    "      }\r\n" + 
                    "   }\r\n" + 
                    "}";
            
            JsonParser parser = new JsonParser();
            JsonObject obj = parser.parse(json).getAsJsonObject();
            
            //get keys of the json objects which are inside "results" alone
            //get it as json object which has keys and values
            //collect the entry set our of the JSON
            //create an iterator so that later you can extract the keys
            Iterator<Entry<String, JsonElement>> iterator = obj.get("results")
                                                                .getAsJsonObject()
                                                                .entrySet()
                                                                .iterator();
            
            while(iterator.hasNext()) {
                //here you will get the keys like - type1 and type2
                System.out.println(iterator.next().getKey());
            }
        
        }
    
    publicstaticvoidmain(字符串[]args)引发异常{
    字符串json=“{\r\n”+
    “\”状态\”:真,\r\n“+
    “\”结果\“:{\r\n”+
    “\“type1\”:{\r\n”+
    “\“id\”:\“type1\”\r\n“+
    “},\r\n”+
    “\“type2\”:{\r\n”+
    “\“id\”:\“type2\”\r\n“+
    “}\r\n”+
    “}\r\n”+
    "}";
    JsonParser=新的JsonParser();
    JsonObject obj=parser.parse(json.getAsJsonObject();
    //获取单独位于“results”内部的json对象的键
    //将其作为具有键和值的json对象获取
    //收集JSON的条目集
    //创建一个迭代器,以便以后可以提取密钥
    迭代器迭代器=obj.get(“结果”)
    .getAsJsonObject()
    .entrySet()
    .iterator();
    while(iterator.hasNext()){
    //在这里你会得到像-type1和type2这样的键
    System.out.println(iterator.next().getKey());
    }
    }
    

    代码编辑:@fluffy指向的内容完全有意义。进行了更改

    您不需要在此处实例化
    Gson
    Gson
    还应用了此处不需要的反序列化
    JsonParser
    是一个更好的选择。@fluffy谢谢。做出改变