activity_main.xml
<TextView android:id="@+id/tvKisiler" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView" />
Okuyacağımız JSON dosyasına ait verileri buradaki tvKisiler adlı TextView içerisine yazılacaktır. Yazacağıız yöntemden biraz bahsetmek gerekirse, bir süreç yönetimidir aslında. Proje yüklenirken istediğim bir method arkaplanda asenkron bir şekilde yüklenmeye başlayacaktır aslında. Projenin okuyacağı JSON dosyasının bilgilerini paylaşalım.
ornek.json
{ "kisiler": [ { "kisi_ID": "1", "isim": "Serkan", "sehir": "Adana" }, { "kisi_ID": "2", "isim": "Ahmed İhsan", "sehir": "Ankara" }, { "kisi_ID": "3", "isim": "Asmin Nisa", "sehir": "Antalya" }, { "kisi_ID": "4", "isim": "Hakan", "sehir": "Kahramanmaraş" }, { "kisi_ID": "5", "isim": "Yusuf Taha", "sehir": "İstanbul" } ] }
Okuyacağımız JSON dosyasının en üst düğümü kisiler adlı düğümdür. Projeye bu düğümü gösterdiğimiz zaman bize o düğüme ait ne kadar veri(ler) varsa hepsini okuyacaktır.
MainActivity.java
package mikrosistem.denemejson; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import org.json.JSONArray; import org.json.JSONException; 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 tvKisiler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); runOnUiThread(new Runnable() { @Override public void run() { new fnJson().execute("https://api.myjson.com/bins/syuyp"); } }); } class fnJson extends AsyncTask { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected String doInBackground(String... params) { return fnAdres_Oku(params[0]); } @Override protected void onPostExecute(String strIcerik) { try { String strKisiler = ""; JSONObject joNesne = new JSONObject(strIcerik); JSONArray jaDizi = joNesne.getJSONArray("kisiler"); for(int i=0;i<jaDizi.length();i++){ JSONObject joDeger = jaDizi.getJSONObject(i); String strKisi_ID = joDeger.getString("kisi_ID"); String strIsim = joDeger.getString("isim"); String strSehir = joDeger.getString("sehir"); strKisiler += "ID: " + strKisi_ID + " | İsim: " + strIsim + " | Şehir: " + strSehir + " \n"; } tvKisiler=(TextView)findViewById(R.id.tvKisiler); tvKisiler.setText(strKisiler); } catch (JSONException e) { e.printStackTrace(); Log.e("Hata1", "Bir hata oluştu: " + e.getLocalizedMessage()); } } } private static String fnAdres_Oku(String strAdres) { StringBuilder sb = new StringBuilder(); try { URL urlAdres = new URL(strAdres); URLConnection ucBaglanti = urlAdres.openConnection(); BufferedReader brOkuyucu = new BufferedReader(new InputStreamReader(ucBaglanti.getInputStream())); String strSatir; while ((strSatir = brOkuyucu.readLine()) != null) { sb.append(strSatir + "\n"); } brOkuyucu.close(); } catch (Exception e) { e.printStackTrace(); Log.e("Hata2", "Bir hata oluştu: " + e.getLocalizedMessage()); } return sb.toString(); } }
Son olarak da uygulamanın internete çıkabilmesi için internet izni vermemiz gerekmektedir.
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />