Androidでjsonファイルを読み取る[クローズ]


84

次のjsonファイルがあります。プロジェクトのどこにjsonファイルを配置する必要があり、それを読み取って保存する方法を知りたいです。

{
"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
ここに質問を投稿する前に、グーグルする必要があります。ネット上にはたくさんの例があります。
chirag 2012

2
@ChiragRaval同意します。しかし、ファイルから読み取るためにjsonファイルをどこに配置しますか?
Aakash Anuj 2012

あなたは、静的なJSONファイルを持っている場合、あなたはあなたのプロジェクトにおける資産と生のフォルダ内に配置することができますが、あなたはJSONファイルを作成している場合、動的その後、SDCARDにファイルを作成する
ρяσѕρєяK

2
@AakashAnuj:Faizan答えを参照して、フォルダの資産にあなたのファイルを置く
Kρяσѕρєя

16
なぜこれが閉鎖されたのかわからない。質問は私には完全に明確で正確に思えます。1)Androidアプリの開発時にjsonデータファイルはどこに保存されますか。2)そのデータを読み取るにはどうすればよいですか?確かに、これは2つの質問に分割できますが、2つの質問は非常に関連性があり(一方を他方なしで使用することはありません)、AakashAnujが行ったように両方に質問することもできます。さらに、@ Faizanはそれに答える素晴らしい仕事をしました、それは「答えられない」苦情を無効にします。評決?有効な質問
SMBiggs 2016年

回答:


210

そのファイルをアセットに入れます

Android Studioプロジェクトで作成されたプロジェクトの場合、メインフォルダーの下にアセットフォルダーを作成する必要があります。

そのファイルを次のように読み取ります。

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;

    }

そして、あなたはstringこの関数によってこのリターンを単に読むことができます

JSONObject obj = new JSONObject(json_return_by_the_function);

JSONの詳細については、http: //www.vogella.com/articles/AndroidJSON/article.htmlを参照して ください。

あなたが望むものを手に入れることを願っています。


3
ファイルサイズがほぼ6〜7 MBの場合はどうなりますか?ファイルに含まれる内容を文字列に格納すると、例外がスローされます(メモリ不足)。JsonArrayファイルから一度に1つのjsonObjectのみを取得する方法はありますか?
Hiren Dabhi 2013年

WebリンクからJSONファイルを読み取るにはどうすればよいですか?
Si8 2013年

7
Android Studioプロジェクトで作成されたプロジェクトの場合、メインフォルダーの下にアセットフォルダーを作成する必要asset folderありmain folderます。
Hirdesh Vishwdewa 2015年

3
available()によって返された結果に基づいてバッファを割り当てることは、Javaドキュメントのとおり正しくありません。docs.oracle.com / javase / 7 / docs / api / java / io / "InputStreamの一部の実装では、ストリーム内の合計バイト数、多くはそうではありません。このメソッドの戻り値を使用して、このストリーム内のすべてのデータを保持することを目的としたバッファを割り当てることは決して正しくありません。」
アンドリュー

@ SiKni8ここを参照してください:stackoverflow.com/a/9606629/1536976
Trilarion 2015年

-1

これを試して:

JSONObject obj = new JSONObject(yourjsonstring);

yourjsonstringとは何ですか?読みたいbifファイルがあります。
Aakash Anuj 2012

2
そのためのファイザンの答えを参照してください
rekire
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.