org.json.JSONException:“在JSON数组中找不到JSON对象”

时间:2018-02-10 19:55:43

标签: java json

这样一个非常简单的JSON(remove_action( 'woocommerce_before_checkout_form', array( 'WC_Amazon_Payments_Advanced', 'checkout_message' ), 5 ); ):

response.getBody().toString()

当我想解析它时有一些问题:

{"per_page":50,"total":93,"last_page":2,"stars":[]}
  

org.json.JSONException:找不到JSONObject [“total”]。

无法解析其他属性:

JSONObject object = new JSONObject(response.getBody()); // no error
System.out.println(object.getJSONObject("total")); // not found
  

org.json.JSONException:找不到JSONObject [“stars”]。

关键是保持response.getBody()

的值
JSONArray startups = object.getJSONArray("stars");

3 个答案:

答案 0 :(得分:2)

内部对象total不是JSONObject它是Int值,这就是您编码崩溃的原因。

所以使用这个

System.out.println(String.valueOf(object.getInt("total")));

而不是

System.out.println(object.getJSONObject("total")); 

答案 1 :(得分:1)

String json = "{\"per_page\":50,\"total\":93,\"last_page\":2,\"stars\":[]}":

JSONObject jsonObject = new JSONObject (json);

JSONArray jsonArray  = jsonObect.getJSONArray("stars");

int perPage = jsonObject.getInt("per_page");

尝试这样......

答案 2 :(得分:0)

除了早先的回答,要解析数组,请使用getJSONArray作为

JSONArray ja = jsonObj.getJSONArray("stars");

您可以将数组循环为:

for(int j=0; j<ja.length(); j++) {
    JSONObject json = ja.getJSONObject(j);
    // do same as before for string, int or other data types
}