簡體   English   中英

org.json.JSONException:值 {“storeid0”:[“1535”],“storeid1”:[“1862”]} 類型為 org.json.JSONObject 的 idddsss 無法轉換為 JSONArray

[英]org.json.JSONException: Value {“storeid0”:[“1535”],“storeid1”:[“1862”]} at idddsss of type org.json.JSONObject cannot be converted to JSONArray

我從我的 api 收到此回復

{"idddsss":{"storeid0":["1535"],"storeid1":["1862"]}}

這是我用來從服務器獲取響應並將所有 storeids 保存在數組中的代碼:

public ArrayList<String> tripItems = new ArrayList<>();
    private void getAllStoreIds(String user_id){

        String url = Baseurl.getCartDetails+"?user_id="+user_id;

        StringRequest postStringRequest = new StringRequest(Request.Method.POST, url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.d(TAG, "ResponseCheck :" + response);
                        tripItems.clear();
                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            JSONArray json = jsonObject.getJSONArray("idddsss");
                            if(json.length ()> 0){
                                for(int countItem = 0;countItem<json.length();countItem++){
                                    JSONObject o = json.getJSONObject(countItem);
                                }

                                if (!tripItems.equals(null)) {
                                    for (int i = 0; i < tripItems.size(); i++) {
                                        Toast.makeText(myContext, tripItems.get(i), Toast.LENGTH_SHORT).show();
                                    }
                                }

                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                            Toast.makeText(myContext, e.getMessage()+ "Error", Toast.LENGTH_SHORT).show();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(myContext, error.getCause().toString(), Toast.LENGTH_SHORT).show();
            }
        });

但是每當我運行代碼時,我都會遇到以下錯誤,我不知道為什么,我首先將我的代碼解析為 JSONObject,然后解析為 JSONArray,並且在循環中我再次將其解析為 JSONObject。

W/System.err: org.json.JSONException: Value {"storeid0":["1535"],"storeid1":["1862"]} at idddsss of type org.json.JSONObject cannot be converted to JSONArray
W/System.err:     at org.json.JSON.typeMismatch(JSON.java:101)
        at org.json.JSONObject.getJSONArray(JSONObject.java:598)
        at com.paysano.Fragment.Payment_fragment$6.onResponse(Payment_fragment.java:356)
        at com.paysano.Fragment.Payment_fragment$6.onResponse(Payment_fragment.java:349)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:82)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:29)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:227)
        at android.app.ActivityThread.main(ActivityThread.java:7822)
        at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)

idddsss 是 object,所以使用getJSONObject代替getJSONArray

JSONObject objIdddsss = jsonObject.getJSONObject("idddsss");
JSONArray jsonArray = objIdddsss.getJSONArray("storeid0");
Log.v("ANS", objIdddsss.toString());
Log.v("ANS", jsonArray.toString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM