在Android中读取JSON文件

90

我有以下的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
2
@ChiragRaval 我同意。但是我应该把json文件放在哪里才能从文件中读取呢? - Aakash Anuj
如果您有静态的JSON文件,那么可以将其放置在项目的assets和raw文件夹中。但是,如果您正在动态创建JSON文件,则应该在SD卡中创建一个文件。 - ρяσѕρєя K
@posper:它是静态的。好的,我应该把它放在哪里?资产还是原始文件夹?然后我怎么从那里读取文件? - Aakash Anuj
2
@AakashAnuj:看看Faizan的答案,然后把你的文件放在assets文件夹里。 - ρяσѕρєя K
17
不知道为什么这个问题被关闭了。对我来说,这个问题似乎非常清晰和明确。1)在开发Android应用程序时,json数据文件存储在哪里。2)如何读取该数据?当然,这可以分为两个问题,但这两个问题是非常相关的(你永远不会使用其中一个而不使用另一个),因此可以问两个问题,就像AakashAnuj所做的那样。此外,@Faizan做了很好的回答,这证实了“无法回答”的抱怨是无效的。结论?有效问题 - SMBiggs
1个回答

228

把那个文件放在资产文件夹中

对于在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;

    }

然后你可以简单地读取这个函数返回的字符串

JSONObject obj = new JSONObject(json_return_by_the_function);

有关JSON的更多详细信息,请参见http://www.vogella.com/articles/AndroidJSON/article.html

希望你能得到你想要的。


3
如果文件大小接近6到7 MB,将文件内容存储为字符串时会抛出内存不足的异常。有没有办法从JsonArray文件中一次只检索一个jsonObject? - Hiren Dabhi
如何从网页链接读取一个 JSON 文件? - Si8
8
在 Android Studio 项目中创建资产文件夹需要在主文件夹下创建,asset folder 指的是资产文件夹,main folder 指的是主文件夹。 - Hirdesh Vishwdewa
4
根据Java文档,在available()返回结果的基础上分配缓冲区是不正确的:“请注意,尽管InputStream的某些实现将返回流中的总字节数,但许多实现将不会返回。使用此方法的返回值来分配旨在保存此流中所有数据的缓冲区永远是不正确的。” - Andrew
2
这个快速教程解释了如何在Android Studio中创建资产文件夹:http://code2care.org/2015/create-assets-folder-in-android-studio/ - Aaron Campbell
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接