我正在學習使用JSON解析來自URL的數據。 在下面的代碼中,我是URLConnection類對象以從URL獲取數據。無法使用JSON獲取解析數據
該代碼不顯示任何錯誤,但在執行時會產生空白屏幕。 我無法理解爲什麼會發生。
這是代碼。
package com.example.asad.parse;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class MainActivity extends AppCompatActivity {
TextView tv;
int count=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("asd", "calling call");
new GetJson().execute("http://api.androidhive.info/json/movies.json");
// try{
//
// call();
// }catch(Exception e) {
//
// }
}
public class GetJson extends AsyncTask<String, Void, Void>
{
@Override
protected Void doInBackground(String... params) {
Log.d("asd", params[0]);
// Log.d("asd","outside try");
StringBuffer sb=new StringBuffer();
URL url= null;
try {
Log.d("asd","inside call");
url = new URL(params[0]);
URLConnection tc = url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(
tc.getInputStream()));
Log.d("asd","above while.");
String line;
while ((line = br.readLine()) != null) {
Log.d("asd","inside while.");
JSONArray ja = new JSONArray(line);
for (int i = 0; i < ja.length(); i++) {
JSONObject jo = (JSONObject) ja.get(i);
Log.d("asd",jo.toString());
}
}
//
// tv=(TextView)findViewById(R.id.textView);
// tv.setText(sb);
Log.d("asd",sb.toString());
} catch (Exception e) {
e.printStackTrace();
Log.d("asd", "I am in catch");
}
return null;
}
}
}
您是否嘗試在瀏覽器中運行url以查看json是否正確顯示? –
什麼是Log.d(「asd」,params [0])和Log.d(「asd」,jo.toString())輸出? – Kuvalya
params [0]打印我指定的URL,因爲代碼無法進入while循環,這就是jo.toString()不打印任何內容的原因。 – a874