Android'de URL adresindeki JSON Dosyasını Basit Şekilde Ayrıştırmak

Android ile bir web adresinde bulunan JSON dosyasının nasıl ayrıştırılıp kullanılacağını anlatacağız

Uzun bir aradan sonra bloguma yazma fırsatı buldum. Bu aralar Android ile biraz uğraşmaktayım. Haliyle bu uğraşlar sonucu elde ettiğim sonuçları sizlerle paylaşmaya çalışıyorum. Çok fazla hikayeye girmeden sunuma geçeyim. Öncelikle boş bir Android projesi açalım. Projenin içerisine (MainActivity olduğunu varsayıyorum) bir adet TextView koyalım.
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" /<
Örnek
Android'de URL adresindeki JSON Dosyasını Basit Şekilde Ayrıştırmak

Yorumlar

Henüz hiçbir yorum yazılmamış. İlk yorumu siz yapın.

Yorum Yaz

Avatar

REKLAM

DDos Koruma, Botnet Koruma, Layer 7 Saldırı koruması, Sanal sunucu, Vds sunucu

REKLAM

Çizgi Filmler

EN

  • Popüler
  • Yeni
  • Son Yorum