Android 如何从本地json文件获取数据?
我在本地创建了一个json文件。我可以在data>data>com.example.storage>files>filename.json中查看。使用这个,我想在本地获取所有文本值&下载所有图像,并从json文件中提供的图像URL将其保存在SD卡中。在离线模式下,我可以加载json文件中的所有文本值以及SD卡中的图像 请让我知道这个想法是否可行。如果没有,请建议其他方法 任务使用本地JSON文件,我想获取数据。如何做到这一点?(我对每个数据使用单独的ID) 示例JSON文件是Android 如何从本地json文件获取数据?,android,json,android-activity,offline-caching,Android,Json,Android Activity,Offline Caching,我在本地创建了一个json文件。我可以在data>data>com.example.storage>files>filename.json中查看。使用这个,我想在本地获取所有文本值&下载所有图像,并从json文件中提供的图像URL将其保存在SD卡中。在离线模式下,我可以加载json文件中的所有文本值以及SD卡中的图像 请让我知道这个想法是否可行。如果没有,请建议其他方法 任务使用本地JSON文件,我想获取数据。如何做到这一点?(我对每个数据使用单独的ID) 示例JSON文件是 {"ImageDa
{"ImageData":[{"ImageId":"12","ImageName":"Img1","ImageDesc":"Img1 Img1Img1 ","ImageUrl":"img_url/pro1.jpg"},{"ImageId":"13","ImageName":"Img13","ImageDesc":"Img13 Img13 Img13Img13 ","ImageUrl":"img_url/pro2.jpg"},{"ImageId":"14","ImageName":"Img14","ImageDesc":"Img14 Img14 Img14 Img14 Img14 ","ImageUrl":"img_url/pro3.jpg.jpg"},]}
是的,这是可能的。下一次提供一些代码,这样我们就有了一些东西可以使用了,人们没有多少办法来解决这个问题 要开始学习,请阅读关于JSON的本教程: 此问题将帮助您在本地读取文件: 当您以字符串形式获取文件时,您可以创建一个
JSONObject
,解析URL并检索图像。您是否尝试过使用
我正在使用它,它工作得非常好,您将创建完美地表示Json的对象。然后对Json应用Gson方法,它将自动获取您创建的对象中的所有数据
如果您想获得有关如何使用Gson的教程,
我建议您在询问其他问题之前尝试一下这项技术,因为它是解析Json数据的非常常用的库。使用它之后,您将拥有能够准确反映Json文件内容的对象
希望有帮助
哦,顺便说一句。我自己也觉得很有用,希望你会喜欢;) 这里是从文件中读取的代码,该文件保存在项目的资产文件夹中
public JSONObject readDummyResponse() {
InputStream inputStream = null;
try {
inputStream = this.getAssets().open("sample_response.txt");
} catch (IOException e1) {
e1.printStackTrace();
}
JSONObject jsonObject = null;
if (inputStream != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(
inputStream));
StringBuffer buffer = new StringBuffer();
String statement;
try {
while ((statement = reader.readLine()) != null) {
if (statement.trim().length() > 0) {
buffer.append(statement);
}
}
} catch (IOException e1) { // TODO Auto-generated catch block
e1.printStackTrace();
}
if (buffer.length() > 0) {
try {
jsonObject = new JSONObject(buffer.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
}
return (JSONObject) jsonObject;
}
这很简单!下面是:
private void DoWork() {
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),
"file.json"); //path to your file assuming its in root of SD card
String content = "";
try {
BufferedReader br = new BufferedReader(new FileReader(file));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
line = br.readLine();
}
content = sb.toString();
} finally {
br.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException io) {
io.printStackTrace();
}
mTextView.setText(""); // A multiline text view big enough
mTextView.append("\n\n-----START CONTENT-----\n\n");
mTextView.append(content);
mTextView.append("\n\n-----START JSON-----\n\n");
try {
JSONArray jsonArray = new JSONArray(content);
int length = jsonArray.length();
for (int i = 0; i < length; i++) { /itterate throu json array
JSONObject obj = jsonArray.getJSONObject(i);
//here you can access individual parts of you json object by getString()...getBoolean().... etc...
mTextView.append("\n" + obj.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
例如:
FileInputStream in = openFileInput("filename.txt");
InputStreamReader inputStreamReader = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
更多详细信息如果您认为这是正确答案,请将其标记为已解决。(:祝你有一个美好的一天,祝你好运!@rawa我的json文件在内存中。请建议任何代码。我已经完成了。请参阅我发布的第二个链接。JSONObject可以从如下字符串创建:new JSONObject(string JSONObject)@rawa如果你接受我的问题,请投票支持我的问题。谢谢你的回答。但是我在内存中保存json文件。请对此提供帮助。然后你可以给出
inputStream
Google如何读取文件内存android
@和Ruboy抱歉,我想我编辑了你的答案,而不是我自己的:P如果我没有,请检查一下去你的吧。对不起!@andruboy,我实现了你的代码,我得到了错误,请澄清。(请再次参考问题)正如我看到的,您的错误表明您有JSONArray,在我的代码中,我正在开发JSONObject,因此您必须根据您的代码更改代码@kevin如果您接受我的问题,请投我的票。@Sean87请让我知道如何显示获取的数据?
FileInputStream in = openFileInput("filename.txt");
InputStreamReader inputStreamReader = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}