簡體   English   中英

Android Json從帶有Volley的html解析沒有找到值

[英]Android Json Parsing from html with Volley no value found

我正在嘗試使用Volley解析項目中的json html。 傑森看起來像這樣:

這是我的代碼塊:

                public void onResponse(JSONObject response) {
                try {
                    JSONArray jsonArray = response.getJSONArray("channels");

                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject channel = jsonArray.getJSONObject(i);

                        String song = channel.getString("song");
                        String artist = channel.getString("age");
                        int duration = channel.getInt("duration");
                        double playedat = channel.getDouble("playedat");
                        String img = channel.getString("image_extralarge");

                        System.out.println(song + ", " + String.valueOf(duration) + ", " + img + "\n\n");
                    }

但是,每當我運行代碼時,都不會出現以下錯誤:

W/System.err: org.json.JSONException: No value for channels
        at org.json.JSONObject.get(JSONObject.java:392)
W/System.err:     at org.json.JSONObject.getJSONArray(JSONObject.java:587)
        at com.example.korhan.frontend.MainActivity$2.onResponse(MainActivity.java:71)
        at com.example.korhan.frontend.MainActivity$2.onResponse(MainActivity.java:67)
        at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:90)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)

因為您的響應不是JSONArray ,所以必須將響應轉換為JSONObject ,然后按名稱引用每個子對象。

我為您建議的是迭代並按照值做您想要做的事情:

public void onResponse(JSONObject response) {

    Iterator<String> iterator = response.keys();

    while (iterator.hasNext() {
        String channelName = iterator.next().toString();
        JSONObject channelObject = new JSONObject(response.get(channelName).toString()));
        String song = channelObject.getString("song");
        /// do other things... getString, getInt
    }
}

在此處查看更多get方法=> JSONObject方法

暫無
暫無

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

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