Merhabalar,
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.
{
"relationships_following": [
{
"title": "",
"media_list_data": [
],
"string_list_data": [
{
"href": "link",
"value": "name",
"timestamp": 1653996504
}
]
},
{
"title": "",
"media_list_data": [
],
"string_list_data": [
{
"href": "link",
"value": "name",
"timestamp": 1653735446
}
]
},
{
"title": "",
"media_list_data": [
],
"string_list_data": [
{
"href": "link",
"value": "name",
"timestamp": 1485454659
}
]
}
]
}
Ş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.;
JSONArray jsonArray = jsonObject.getJSONArray("relationships_following");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.