Ben aşağıdaki kod ile kullanıcıya dahili depolama biriminden bir json dosyası seçme imkanı veriyorum.
Toast mesajında seçilen dosyanın url bilgisi yazılıyor yani uri.getPath() kodu =>/document/primary : Download/file.json vb. tarzında geriye bir değer dönderiyor.
int requestcode = 1;
public void onActivityResult(int requestcode, int resulCode, Intent data){
super.onActivityResult(requestcode,resulCode,data);
Context context = getApplicationContext();
if(requestcode == requestcode && resulCode == Activity.RESULT_OK){
if(data == null){
return;
}
Uri uri = data.getData();
Toast.makeText(context, uri.getPath(), Toast.LENGTH_SHORT).show();
}
}
public void openfilechooser(View view){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent,requestcode);
}
Okumaya çalıştığım json dosyasının yapısı ise şu şekildedir.
Şimdi dosyayı seçme aşamasına kadar her şey yolunda ama json dosyasındaki value değerlerini satır satır edittext nesnesine atamam lazım bu konuda bir çok makale okudum ama bu dosyayı nasıl parçalara ayırıp içine value değerine karşılık gelen veriyi edittexte satır satır atayacağımı çözemedim. Bu konuda bana yardımcı olabilir misiniz? Teşekkür ederim
Ben aşağıdaki kod ile kullanıcıya dahili depolama biriminden bir json dosyası seçme imkanı veriyorum.
Toast mesajında seçilen dosyanın url bilgisi yazılıyor yani uri.getPath() kodu =>/document/primary : Download/file.json vb. tarzında geriye bir değer dönderiyor.
int requestcode = 1;
public void onActivityResult(int requestcode, int resulCode, Intent data){
super.onActivityResult(requestcode,resulCode,data);
Context context = getApplicationContext();
if(requestcode == requestcode && resulCode == Activity.RESULT_OK){
if(data == null){
return;
}
Uri uri = data.getData();
Toast.makeText(context, uri.getPath(), Toast.LENGTH_SHORT).show();
}
}
public void openfilechooser(View view){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent,requestcode);
}
Okumaya çalıştığım json dosyasının yapısı ise şu şekildedir.
Şimdi dosyayı seçme aşamasına kadar her şey yolunda ama json dosyasındaki value değerlerini satır satır edittext nesnesine atamam lazım bu konuda bir çok makale okudum ama bu dosyayı nasıl parçalara ayırıp içine value değerine karşılık gelen veriyi edittexte satır satır atayacağımı çözemedim. Bu konuda bana yardımcı olabilir misiniz? Teşekkür ederim
JSON'da dikkat etmen gereken Array ve Object'lerdir.
[
ile başlayıp bitenler Array,
{
ile başlayıp bitenler Object'tir.
Kodun tamamı JsonObject ile başlayıp bitiyor. Önce Object içindeki Arrayları ayrıştırman gerek. Senin kod yapın şöyle olacak;
JSONObject jsonObject = new JSONObject("BURAYA DOSYA İÇERİĞİNİN TAMAMI GELECEK");
Dosya içini Json olarak atadıktan sonra Array'ları ayrıştırıyoruz. "relationships_following" içindekileri alacağız.;
Aldıktan sonra forech döngüsü ile içindeki item sayısı ne kadarsa o kadar döngü oluşturulacak;
for (int i = 0; i < jsonArray.length(); i++) {
String title = jsonArray.getJSONObject(i).getString("title");
}
Senin Json yapında JsonArray içinde tekrar array açılmış. Onlarıda şöyle parse edebilirsin:
for (int i = 0; i < jsonArray.length(); i++) {
String title = jsonArray.getJSONObject(i).getString("title");
String stringListHref = jsonArray.getJSONObject(i).jsonArray("string_list_data").getJSONObject(0).getString("href");
}
Farkındaysan stringListHref 'de getJSONObject(0) yaptım forech açmadım sebebi döngü yok orada o yüzden ilk döngüyü alacağımız için 0 eklemem yeterli oldu. Kalanını kafana göre yerleştirebilirsin.
Aldıktan sonra forech döngüsü ile içindeki item sayısı ne kadarsa o kadar döngü oluşturulacak;
for (int i = 0; i < jsonArray.length(); i++) {
String title = jsonArray.getJSONObject(i).getString("title");
}
Senin Json yapında JsonArray içinde tekrar array açılmış. Onlarıda şöyle parse edebilirsin:
for (int i = 0; i < jsonArray.length(); i++) {
String title = jsonArray.getJSONObject(i).getString("title");
String stringListHref = jsonArray.getJSONObject(i).jsonArray("string_list_data").getJSONObject(0).getString("href");
}
Farkındaysan stringListHref 'de getJSONObject(0) yaptım forech açmadım sebebi döngü yok orada o yüzden ilk döngüyü alacağımız için 0 eklemem yeterli oldu. Kalanını kafana göre yerleştirebilirsin.
Merhabalar cevabınız için çok teşekkür ederim. Bu mantığı herhangi bir model oluşturmadan direkt olarak( örneğin Mainactivity.java) içerisine yazarsam olur değil mi?
Ayrıca bu satıra " JSONObject jsonObject = new JSONObject("BURAYA DOSYA İÇERİĞİNİN TAMAMI GELECEK"); " json dosyasının yolunu mu yoksa direkt olarak kendisini mi tanimlayacagim)
Merhabalar cevabınız için çok teşekkür ederim. Bu mantığı herhangi bir model oluşturmadan direkt olarak( örneğin Mainactivity.java) içerisine yazarsam olur değil mi
Burada veriyi nasıl parse edeceğini yani okuyacağını gösterdim. Herhangi bir tasarıma entegre edip göstermen için Model ve Adapter'de yazman gerekecek. Yoksa boş boş döner o
Burada veriyi nasıl parse edeceğini yani okuyacağını gösterdim. Herhangi bir tasarıma entegre edip göstermen için Model ve Adapter'de yazman gerekecek. Yoksa boş boş döner o
Tamam hocam, ben bunu deneyeceğim bir, çok teşekkür ederim tekrardan.
Rica ederim. Takıldığın yer olursa etiketle bakarız.
@WebilisimNET; merhabalar hocam, takılınca etiketle demiştiniz. Ben bu model ve adaptor işine girince kafam iyice karıştı. Bir kaç bir şey denedim ama pek bir işe yaramadı. Müsait olduğunuzda size yayın açsam takıldığım yerleri anlatsam uygun mudur?
@WebilisimNET; merhabalar hocam, takılınca etiketle demiştiniz. Ben bu model ve adaptor işine girince kafam iyice karıştı. Bir kaç bir şey denedim ama pek bir işe yaramadı. Müsait olduğunuzda size yayın açsam takıldığım yerleri anlatsam uygun mudur?
Json parse yapamıyorsan onu hiç yapamazsın zaten zira daha karmaşık. İşlerim yoğun maalesef o şekilde bakamam. Google'a android adapter example yazın binlerce kaynak var zaten.
Json parse yapamıyorsan onu hiç yapamazsın zaten zira daha karmaşık. İşlerim yoğun maalesef o şekilde bakamam. Google'a android adapter example yazın binlerce kaynak var zaten.