JSON对象异常

时间:2019-01-18 03:55:10

标签: json rest web-services

我正在编写一个Web服务-REST。 我收到的是text_plain格式。

我的数据示例:

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

在我的Restful Web服务中,我尝试读取数据,但是出现错误500 Internal Server Error-JSON Object not found。

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 :(得分:0)

 **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

答案 1 :(得分:0)

我通过String更改为以下格式:

{“ 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);  


        }
    }