这样一个非常简单的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");
答案 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
}