[英]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.