在Android中读取json文件[关闭]
Posted
技术标签:
【中文标题】在Android中读取json文件[关闭]【英文标题】:Reading a json file in Android [closed] 【发布时间】:2012-11-28 15:59:33 【问题描述】:我有以下 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]
]
【问题讨论】:
在此处发布问题之前,您需要使用谷歌搜索。网上有很多例子。 @ChiragRaval 我同意。但是要从文件中读取的 json 文件应该放在哪里呢? 如果你有静态 json 文件,那么你可以将它放在项目中的 assets 和 raw 文件夹中,但如果你是动态创建 json 文件,则在 SDCARD 中创建一个文件 @AakashAnuj :查看 Faizan 答案并将您的文件放入 assets 文件夹中 不知道为什么关闭。这个问题对我来说似乎非常清楚和准确。 1)开发android应用时,json数据文件存放在哪里。 2)我如何读取这些数据?当然,这可以分为两个问题,但是这两个问题非常相关(你永远不会在没有另一个的情况下使用一个)一个人不妨同时问这两个问题,AakashAnuj 就是这样做的。此外,@Faizan 在回答它方面做得很好,这使得“无法回答”的投诉无效。判决? 有效问题 【参考方案1】:将该文件放入资产中。
对于在 Android Studio 项目中创建的项目,您需要在主文件夹下创建 assets 文件夹。
将该文件读取为:
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
希望你能得到你想要的。
【讨论】:
如果文件大小接近 6 到 7 MB 怎么办?如果将文件包含到字符串中,则会引发异常(内存不足)。有没有办法从 JsonArray 文件中一次只检索一个 jsonObject? 如何从网络链接读取 JSON 文件? 对于Android Studio项目中创建的项目,您需要在主文件夹下创建assets文件夹asset folder
和main folder
是什么?
根据 Java 文档,根据 available() 返回的结果分配缓冲区是不正确的:docs.oracle.com/javase/7/docs/api/java/io/…“请注意,虽然 InputStream 的某些实现将返回流中的总字节数,很多人不会。使用此方法的返回值来分配旨在保存此流中所有数据的缓冲区是不正确的。"
本快速教程介绍了如何在 Android Studio 中创建资产文件夹:code2care.org/2015/create-assets-folder-in-android-studio以上是关于在Android中读取json文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
绕过内存错误以在 Python 中读取大型 JSON 文件 [关闭]