Java Array循环错误

时间:2018-03-15 17:28:15

标签: arrays json

我正在使用Orchestration Design,但发现它没有我需要的所有功能,所以我们有很多硬编码的JAVA。

我已经阅读了几篇讨论类似错误的帖子,如下所示。

  

org.codehaus.jettison.json.JSONException:JSONObject [“customer”] not not   结果

我已经尝试了之前发布的几种解决方案,但仍然无法解决这个问题。我只有2周的Java培训,而且几乎没有Java的实际经验。因此,如果您能够将其分解或提供更多指导,我将非常感激。 这是我的数据:

{"statusCode":"200",
"statusMessage":"OK",
"data":
    {"customer":
        [{"name":"John  Smith",
        "dob":"06-14-2000",
        "phones":
            [{"phoneID":"d3dd30b1-cd47-46f5-8e06-1fd5e8631203",
            "phoneNumberTypeCode":"3",
            "phoneNumber":"2162100834",
            "sortOrderCode":"1"},

            {"phoneID":"0153632c-ae8f-4b12-a68f-1ab33fa4e7e3",
            "phoneNumberTypeCode":"3",
            "phoneNumber":"3306973358",
            "sortOrderCode":"2"}]},

        {"name":"same  five",
        "dob":"06-01-1968",
        "phones":
            [{"phoneID":"83c49dd0-d308-4e88-b25e-4ddff53bf124",
            "phoneNumberTypeCode":"3",
            "phoneNumber":"3306973358",
            "sortOrderCode":"1"}]},

        {"name":"same  five",
        "dob":"06-01-1968",
        "phones":
            [{"phoneID":"ac61e9ce-ea4e-46c3-85d7-cd07bdcbf54e",
            "phoneNumberTypeCode":"3",
            "phoneNumber":"3306973358",
            "sortOrderCode":"1"}]},

        {"name":"kjhdv  askljdh",
        "dob":"06-01-1968",
        "phones":
            [{"phoneID":"8706e547-c9fe-4844-84a8-f4c78abd7277",
            "phoneNumberTypeCode":"3",
            "phoneNumber":"3306973358",
            "sortOrderCode":"1"}]}]}}

此时我只对进入DOB感兴趣。我需要将其与客户输入的数据进行比较,以尝试提取正确的帐户。稍后我将需要获取其余的数据,但我希望一旦我理解了如何进入DOB,我就可以自己解决剩下的问题了。

这是我写的代码。我有很多注释掉的代码,这是我在这个论坛上找到的例子,并试图开始工作。每个版本都给我一个错误

  

找不到JSONObject [“customer”]。

我确实知道其他帖子也有同样的问题,但我无法让任何解决方案适合我(可能是因为我缺乏经验)

public String getAccount(String requestUrl, String token) throws Exception {

    String statusmessage = "";

    try {

        CloseableHttpClient httpClient = getHttpClient();

        HttpGet getRequest = new HttpGet(requestUrl);

        getRequest.addHeader("accept", "application/json");
        getRequest.addHeader("Authorization", token);

        HttpResponse response = httpClient.execute(getRequest);

        if (response.getStatusLine().getStatusCode() != 200) {
            System.out.println("StatCode = "
                    + response.getStatusLine().getStatusCode());
            return "500";
            //throw new Exception("Failed : HTTP error code : " +
            //response.getStatusLine().getStatusCode());
        }

        String responseStr = EntityUtils.toString(response.getEntity());
        System.out.println("RESPONSE *** " + responseStr);
        String jsonResp = responseStr;
        JSONObject jsonObj = new JSONObject(jsonResp);
        statusmessage = jsonObj.get("statusMessage").toString();
        System.out.println("StatusMes : " + statusmessage);
        String data = jsonObj.get("data").toString();
        System.out.println("Data : " + data);
        //String customer = jsonObj.get("customer").toString();

        JSONArray customer = jsonObj.getJSONArray("customer");
        for(int i=0;i<customer.length();i++)
        {
        JSONObject jb1 = customer.getJSONObject(i);
        String name = jb1.getString("name");
        }

        //JSONObject jObject = new JSONObject(response);
           // JSONArray jsonArray = jObject.getJSONObject("response").getJSONArray("Message");
           // for (int i = 0; i < jsonArray.length(); i++) {
            //    JSONObject objJson = jsonArray.getJSONObject(i);
            //}
                //TopTenGetterSetter obj = new TopTenGetterSetter();  

        /* JSONArray Customer = jsonObj.getJSONArray("customer");
        String customer = Customer.getJSONObject(0).getString("name");
        for (int i = 0; i < Customer.length(); i++) {
            String name = Customer.getJSONObject(i).getString("name");
            System.out.println(name);
            String dob = Customer.getJSONObject(i).getString("dob");
            System.out.println(dob);
            String phones = Liste.getJSONObject(i).getString("phones");
            System.out.println(phones);
            String Position = Liste.getJSONObject(i).getJSONObject("Position").toString();
            System.out.println(Position);
         */             

        //JSONObject outerObject = new JSONObject(jsonResp);
        //JSONObject innerObject = outerObject.getJSONObject("JObjects");
        //JSONArray jsonArray = innerObject.getJSONArray("JArray1");
        //for (int i = 0, size = jsonArray.length(); i < size; i++) {
        //  JSONObject objectInArray = jsonArray.getJSONObject(i);

            // "...and get their component and their value."
            //String[] elementNames = JSONObject.class.getName(objectInArray);
            //for (String elementName : elementNames) {
            //  String value = objectInArray.getString(elementName);
            //}

谢谢,

2 个答案:

答案 0 :(得分:2)

找不到JSONObject [“customer”],因为它不存在。在您的JSON上,“客户”位于不在根目录下的“数据”下。

答案 1 :(得分:0)

试试这个:)

   JSONObject mainNode =  new JSONObject(jsonResp);
   JSONObject dataNode =  mainNode.getJSONObject("data");
   JSONArray customerNode = dataNode.getJSONArray("customer");
   for(int i=0;i<customerNode.length();i++)
   {
        JSONObject childNode = customerNode.getJSONObject(i);
        String name = childNode.getString("name").toString();
   }