Java从嵌套的json中提取键值
我有以下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
{
“状态”:正确,
“结果”:{
“类型1”:{
“id”:“类型1”
},
“类型2”:{
“id”:“类型2”
}
}
}
期望输出为
type1,type2
我使用Gson进行序列化和反序列化。这些是使用Gson时应该执行的步骤
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谢谢。做出改变