JSON Object Exception - PullRequest
       4

JSON Object Exception

0 голосов
/ 18 января 2019

Пишу веб-сервис-ОТДЫХ. Я получаю формат text_plain.

Пример моих данных:

{"data_log":
    {
       "methodClass": [{"methodName": 1, "methodStatus": "1"}, 
           {"methodName": 2, "methodStatus": "1"}]
    }
}

В моем веб-сервисе Restful я пытаюсь прочитать данные, но получаю ошибку 500 Внутренняя ошибка сервера - объект JSON не найден.

public int adaptiveAuth(String objDataLog){ 
        logWriter("objDataLog:"+objDataLog);
        JSONObject obj = new JSONObject(objDataLog);

 JSONArray methodClassObj=(JSONArray)obj.get("methodClass"); 

        if (methodClassObj != null) {
             JSONObject methodObj;
             String entrymethodName, entrymethodStatus;
             for (Object o : methodClassObj) {
                methodObj = (JSONObject) o;
                entrymethodName = String.valueOf(methodObj.get("methodName"));
                entrymethodStatus = String.valueOf(methodObj.get("methodStatus"));

                logWriter("entrymethodName:"+entrymethodName);
                logWriter("entrymethodStatus:"+entrymethodStatus);
             }

        }
}

Я уже пытался использовать приведенный ниже код, но все равно выдает ошибку.

 String methodClass= obj.getJSONObject("data_log").getString("methodClass"); 

Я ожидаю поместить текущие данные в двухмерный массив, который будет выглядеть так:

[1,1], [2,1]

Кто-нибудь может дать мне несколько советов, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Я изменил строку на этот формат:

{"methodSet": [ { "methodName": 1, "methodStatus": "1" }, { "methodName": 2, "methodStatus": "1" } ] }

и для кода:

  ArrayList<String> listMethod = new ArrayList<String>();    
    JSONArray arr=(JSONArray)obj.get("methodClass"); 

    if (arr != null) {
        JSONObject objMethod;
        String MethodName, MethodStatus;
        for (Object o : arr) {
            objMethod = (JSONObject) o;
            MethodName = String.valueOf(objMethod.get("methodName"));
            MethodStatus = String.valueOf(objMethod.get("methodStatus"));

            int resultMethodName = Integer.parseInt(MethodName);    
            int resultMethodStatus = Integer.parseInt(MethodStatus);    

            logWriter("MethodStatus"+resultMethodName);
            logWriter("MethodName"+resultMethodStatus);

            listMethod.add("(" + MethodName + "," + MethodStatus + ")");

            logWriter("listMethod is :     "+listMethod);  


        }
    }
0 голосов
/ 18 января 2019
 **Try this code for parsing json data**      

               ArrayList<HashMap<String, String>> list;
              JSONObject jsonObj = new JSONObject(jsonStr);

               // Getting JSON Array node
               JSONArray b= jsonObj.getJSONArray("methodClass");

               // looping through All data
               for (int i = 0; i < b.length(); i++) {
                  JSONObject c = b.getJSONObject(i);

                  String entrymethodName = c.getJSONObject("methodClass").getString("methodName");
                  String entrymethodStatus = c.getJSONObject("methodClass").getString("methodStatus");

                  // tmp hash map for storing values
                  HashMap<String, String> co = new HashMap<>();

                  // adding each child node to HashMap key => value
                  co.put(entrymethodName, entrymethodStatus );


                  // adding co to  list
                  list.add(co);

Также проверьте это - https://gist.github.com/codebutler/2339666

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...