我正在开发一个项目,我需要在 Java 中解析 JSON 并显示 JSON 键/节点的分层路径,如下所述。
我正在使用 Jackson API 用 Java 开发这个程序,但我无法获得任何现成的 API,它将从 JSON 返回当前键/节点的分层路径。
JSON 数据-
{“tomcat-users”:
{
“role”:[
{“@rolename”:”manager-gui”},
{“@rolename”:”manager-script”},
{“@rolename”:”manager-jmx”},
{“@rolename”:”manager-status”}
],
”user”:{
“@username”:”admin”,
”@roles”:”manager-gui,manager-script”,
”@password”:”admin”
}
}
}
输出应该像-
Column 1 Column 2
---------------------------------------------------------------------------
tomcat-users -> role[1] -> @rolename manager-gui
tomcat-users -> role[2] -> @rolename manager-script
tomcat-users -> role[3] -> @rolename manager-jmx
tomcat-users -> role[4] -> @rolename manager-status
tomcat-users -> user -> @username admin
tomcat-users -> user -> @roles manager-gui,manager-script
tomcat-users -> user -> @password admin
任何人都可以告诉我,他们有任何可用的 API 可以返回我的路径吗?
我的 Java 代码 -
public static void generateJsonPath(JsonNode node) {
Iterator<String> fieldNames = node.getFieldNames();
while(fieldNames.hasNext()){
String fieldName = fieldNames.next();
JsonNode fieldValue = node.get(fieldName);
if (fieldValue.isObject()) {
System.out.println(fieldName + " -> ");
generateJsonPath(fieldValue);
} else if(fieldValue.isArray()) {
System.out.println(fieldName + " -> ");
Iterator<?> iterator = fieldValue.getElements();
while(iterator.hasNext()) {
generateJsonPath((JsonNode) iterator.next());
}
} else {
String value = fieldValue.asText();
System.out.println(fieldName + " : " + value);
}
}
}
Java 代码结果 -
tomcat-users ->
role ->
@rolename : manager-gui
@rolename : manager-script
@rolename : manager-jmx
@rolename : manager-status
user ->
@username : root
@password : root
@roles : manager-gui,manager-script,manager-jmx,manager-status