使用包含多个JSON数组的Java解析来自api的JSON响应

使用包含多个JSON数组的Java解析来自api的JSON响应,java,arrays,json,Java,Arrays,Json,我从API响应中得到了以下JSON。我需要捕获级别1、级别11、级别111和级别1111的名称和原点。这可能会根据我们在应用程序中的顺序而增加或减少。当级别数固定时,我可以使用JSON解析器解析并获取名称和来源,但如果这种情况不断变化,我该如何处理它。下面是JSON响应- 假设您正在使用,您可以使用如下方法遍历整个树: public static void parse(JSONArray arg) { for (int i = 0; i<arg.length(); i++) {

我从API响应中得到了以下JSON。我需要捕获级别1、级别11、级别111和级别1111的名称和原点。这可能会根据我们在应用程序中的顺序而增加或减少。当级别数固定时,我可以使用JSON解析器解析并获取名称和来源,但如果这种情况不断变化,我该如何处理它。下面是JSON响应-

假设您正在使用,您可以使用如下方法遍历整个树:

public static void parse(JSONArray arg) {
    for (int i = 0; i<arg.length(); i++) {
        System.out.println(arg.getJSONObject(i).getString("name"));
        System.out.println(arg.getJSONObject(i).getString("origin"));
        parse (arg.getJSONObject(i).getJSONArray("steps"));
    }
}

我相信您知道如何只打印您想从这里打印的内容。

Jackson可以处理此问题。您是否可以共享用于固定数据的代码?因为从您共享的示例来看,这看起来像一个只在步骤上展开的递归结构。谢谢您的帮助。。。这种方法效果很好
public static void parse(JSONArray arg) {
    for (int i = 0; i<arg.length(); i++) {
        System.out.println(arg.getJSONObject(i).getString("name"));
        System.out.println(arg.getJSONObject(i).getString("origin"));
        parse (arg.getJSONObject(i).getJSONArray("steps"));
    }
}
JSONObject jo = new JSONObject(response);
JSONObject jo_root = jo.getJSONObject("root");
parse(jo_root.getJSONArray("steps"));