Java 从JsonPath提取动态密钥
这是我的api“响应”,它的类型是JsonPathJava 从JsonPath提取动态密钥,java,json,Java,Json,这是我的api“响应”,它的类型是JsonPath { "random": { "5756cd7a-4662-4428-9b09-dbff3080450a": { "@class": "one", "id": "5756cd7a-4662-4428-9b09-dbff3080450a" }, "857ef5ee-af98-4f24-89fe-29bdbebde882": { "@class": "two", "id": "
{
"random": {
"5756cd7a-4662-4428-9b09-dbff3080450a": {
"@class": "one",
"id": "5756cd7a-4662-4428-9b09-dbff3080450a"
},
"857ef5ee-af98-4f24-89fe-29bdbebde882": {
"@class": "two",
"id": "857ef5ee-af98-4f24-89fe-29bdbebde882"
}
}
}
关于如何提取第一个随机元素,我一直很困惑。通过查看文档,也许您可以使用来进行提取,例如:
String random = response.getString("random");
尽管我对这个
JsonPath
库不是很熟悉,所以可能没那么容易。假设您的json响应是responseJsonString中的字符串,下面的代码可能会解决您的问题
public class RandomObject {
private String klass; // N.B. Not sure how to deal with @class naming
private String id;
// ... constructor/setters/getters etc...
}
List randomIDS=JsonPath.read(responseJsonString,“$.random..id”);
集合。反向(随机ID);
用于(字符串randomID:randomID){
StringBuilder StringBuilder=新StringBuilder(“$.random”);
字符串randomClass=JsonPath.read(
响应字符串,
stringBuilder.append(randomID.append(“.@class”).toString());
System.out.println(随机类);
}
这不是有效的JSON
public class RandomObject {
private String klass; // N.B. Not sure how to deal with @class naming
private String id;
// ... constructor/setters/getters etc...
}
List<String> randomIDS = JsonPath.read(responseJsonString, "$.random..id");
Collections.reverse(randomIDS);
for (String randomID : randomIDS) {
StringBuilder stringBuilder = new StringBuilder("$.random.");
String randomClass = JsonPath.read(
responseJsonString,
stringBuilder.append(randomID).append(".@class").toString());
System.out.println(randomClass);
}