在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
在这里发布问题之前,您需要进行谷歌搜索。网上有大量示例。
希拉格2012年

2
@ChiragRaval我同意。但是,我应将json文件放在哪里读取文件?
Aakash Anuj

如果你有静态的JSON文件,那么你可以把它里面的项目资产和原始文件夹,但如果你正在创建JSON文件动态然后创建SD卡中的文件
ρяσѕρєяķ

2
@AakashAnuj:参见Faizan的回答,并将您的文件保存在资产文件夹中
–ρяσsρєяK 2012年

16
不知道为什么关闭了它。对我来说,这个问题似乎非常清楚和精确。1)开发Android应用程式时,json资料档案存放在哪里?2)如何读取该数据?当然,这可以分为两个问题,但是两个问题是如此相关(您永远不会在没有另一个问题的情况下使用一个问题),一个问题也可能要问两个,这就是AakashAnuj所做的。此外,@ Faizan在回答问题上做得很出色,这使“无法回答”的投诉无效。判决?有效问题
SMBiggs

Answers:


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文件中检索一个jsonObject?
Hiren Dabhi 2013年

如何从网络链接读取JSON文件?
2013年

7
对于需要文件夹中创建的主文件夹下的资产的Android Studio项目创建的项目是什么asset foldermain folder
Hirdesh Vishwdewa

3
根据Java文档,基于available()返回的结果分配缓冲区是不正确的:docs.oracle.com/javase/7/docs/api/java/io/… “请注意,虽然InputStream的某些实现会返回流中的字节总数,很多不会。使用此方法的返回值分配旨在保留该流中所有数据的缓冲区永远是不正确的。”
安德鲁(Andrew)


-1

试试这个:

JSONObject obj = new JSONObject(yourjsonstring);

你的json字符串是什么?我有一个想要读取的BIF文件。
Aakash Anuj

2
看到Faizan的答案
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.