Android'de bir json dosyasını okuma [kapalı]


84

Aşağıdaki json dosyam var. Projemde json dosyasını nereye yerleştirmem gerektiğini ve nasıl okuyup saklayacağımı bilmek istiyorum.

{
"aakash": [
    [  0.070020,0.400684],
    [  0.134198,0.515837],
    [  0.393489,0.731809],
    [  0.281616,0.739490]

],
"anuj": [
    [  1287.836667,-22.104523],
    [  -22.104523,308.689613],
    [  775.712801,-13.047385],
    [  -13.047385,200.067743]
]
}

3
Buraya soru göndermeden önce googling yapmanız gerekir. İnternette tonlarca örnek var.
Chirag

2
@ChiragRaval Katılıyorum. Ama json dosyasını bir dosyadan okumak için nereye yerleştirmeliyim?
Aakash Anuj

statik json dosyanız varsa, onu Projenizdeki varlıkların ve ham klasörlerin içine yerleştirebilirsiniz, ancak dinamik olarak json dosyası oluşturuyorsanız
SDCARD

2
@AakashAnuj: Faizan cevabını görün ve dosyanızı varlıklar klasörüne koyun
ρяσѕρєя K

16
Bunun neden kapatıldığını bilmiyorum. Soru bana tamamen açık ve net görünüyor. 1) Bir Android uygulaması geliştirilirken json veri dosyaları nerede saklanır. 2) Bu verileri nasıl okuyabilirim? Elbette, bu iki soruya bölünebilir, ancak iki soru o kadar yakından ilişkilidir (birini diğeri olmadan asla kullanamazsınız) biri, AakashAnuj'un yaptığı gibi, her ikisini de sorabilir. Ayrıca @Faizan, "cevaplanamayan" şikayeti geçersiz kılan harika bir cevap verdi. Karar? Geçerli Soru
SMBiggs

Yanıtlar:


212

O dosyayı varlıklara koyun .

Android Studio projesinde oluşturulan proje için ana klasör altında varlık klasörü oluşturmanız gerekir.

Bu dosyayı şu şekilde okuyun:

public String loadJSONFromAsset(Context context) {
        String json = null;
        try {
            InputStream is = context.getAssets().open("file_name.json");

            int size = is.available();

            byte[] buffer = new byte[size];

            is.read(buffer);

            is.close();

            json = new String(buffer, "UTF-8");


        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        return json;

    }

ve sonra bu stringdönüşü bu işlevle basitçe okuyabilirsiniz :

JSONObject obj = new JSONObject(json_return_by_the_function);

JSON ile ilgili daha fazla ayrıntı için bkz. Http://www.vogella.com/articles/AndroidJSON/article.html

Umarım istediğini alırsın.


3
dosya boyutu neredeyse 6 ila 7 MB ise ne olur? dosya dizge içerisine depolanırsa, bir istisna atar (bellek yetersiz). JsonArray dosyasından aynı anda yalnızca bir jsonObject almanın bir yolu var mı?
Hiren Dabhi

Bir web bağlantısından JSON dosyasını nasıl okurum?
Si8

7
Android Studio projesinde oluşturulan proje için ana klasörün altında varlık klasörü oluşturmanız gerekir, nedir asset folderve main foldernedir?
Hirdesh Vishwdewa

3
Available () tarafından döndürülen sonuca dayalı olarak arabelleği ayırmak Java belgelerine göre yanlıştır: docs.oracle.com/javase/7/docs/api/java/io/… "Bazı InputStream uygulamalarının Akıştaki toplam bayt sayısı, çoğu olmaz. Bu yöntemin dönüş değerini, bu akıştaki tüm verileri tutması amaçlanan bir arabellek ayırmak için kullanmak asla doğru değildir. "
Andrew

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.