循环调用json数组,并尝试获取机器详细信息JSON对象

我正在尝试循环调用:JSON 数组并尝试获取存在于调用 JSON 数组列表下的机器详细信息 JSON 对象获取json数组对象的值,如下所示:

{
   "":{
      "type":"CORR-ID",
      "tags":[
         {
            "name":"9VB6454145983212H",
            "flags":[
               "FLAG_DYNAMIC_VALUE",
               "FLAG_ID_LOOKUP_SUPPORTED"
            ]
         }
      ],
      "callSummary":[
         {
            "colo":"lvs",
            "pool":"amazon_paymentsplatformserv",
            "machine":"stage2utb29958"
         },
         {
            "colo":"lvs",
            "pool":"amazon_elmoserv",
            "machine":"msmamoserv_0"
         },
         {
            "colo":"lvs",
            "pool":"amazon_xopaymentgatewayserv",
            "machine":"msmastmentgatewayserv_1"
         },
         {
            "colo":"lvs",
            "pool":"amazon_paymentapiplatserv",
            "machine":"msmaentapiplatserv_2"
         },
         {
            "colo":"lvs",
            "pool":"amazon_userlifecycleserv_ca",
            "machine":"stage2utb91581"
         },
         {
            "colo":"lvs",
            "pool":"amazon_dafproxyserv",
            "machine":"msmasfproxyserv_1"
         },
         {
            "colo":"lvs",
            "pool":"paymentserv",
            "machine":"te-alm-15757_paymentexecutionserv_0",
            "calls":[
               {
                  "colo":"lvs",
                  "pool":"fimanagementserv_ca",
                  "machine":"msmgementserv_ca_20"
               },
               {
                  "colo":"lvs",
                  "pool":"fimanagementserv_ca",
                  "machine":"msmasgementserv_ca_4"
               }
               ]
              }
            ]
    }
}

我将上述 JSON 文件存储在 String 变量中,并尝试使用以下代码获取被调用机器的详细信息:JSON ARRAY。

代码:

public static void getHttpUrlformachineList(String response, String CalId, String componentName)
            throws Exception
      {
           //System.out.println(response);
           Map data = new HashMap();
           JSONParser parser = new JSONParser();
           JSONObject object = (JSONObject) parser.parse(response);
           JSONObject getValue = (JSONObject) object.get(CalId.trim()); //CalId is the dynamic value that mentioned in the JSON input file
           JSONObject getCalSummary = (JSONObject) object.get("callSummary");
           JSONArray arrays=(JSONArray) getCalSummary.get("calls");
           System.out.println(arrays.size()); // return null pointer
       }

错误:

java.lang.NullPointerException: null
        at com.online.amazon.hadoop.cal.swagger.utils.Utils.getHttpUrlformachineList(Utils.java:112) ~[classes/:na]

如果您注意到调用数组列表并非在所有 callSummary JSON 数组中都可用,并且它将是动态的并且在上面列出的任何组件下都可用。

所以我只想动态获取调用:JSON 数组并迭代并获取计算机详细信息。

有人可以帮我实现吗?

注意:我使用 JSON Simple 库来解析和迭代 JSON。如果我能找到相同的解决方案,那就太好了。

更新:

我还尝试将 callSummary 创建为 JSON 数组并遍历该数组以获取每个 JSON 对象并尝试查找调用获取json数组对象的值,但这也导致了 Null 指针。

同样,调用 json 数组不是特定于索引的。它可以在有效载荷中的任何位置。它可能存在也可能不存在于有效载荷中。我只需要处理它是否存在于任何组件中,然后我需要获取该机器的详细信息

© 版权声明
THE END
喜欢就支持一下吧
点赞288 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片