我从服务器下载json数据,我想将它们保存到android mobile中的文件中。
如何使用外部存储?当我保存它们时,我还想在文件中搜索特定数据。有没有比外部存储更好的方法呢?
//parse json data
try{
JSONArray jArray = new JSONArray(result);
JSONObject json_data = null;
category = new String[jArray.length()];
name = new String[jArray.length()];
date = new String[jArray.length()];
content = new String[jArray.length()];
for(int i=0;i<jArray.length()+2;i++){
HashMap<String, String> map = new HashMap<String, String>();
if(i==0){
if(category8 == "All"){
map.put("id", "5");
map.put("name", " All Posts");
map.put("latitude", "");
map.put("longitude", "");
map.put("date", "");
map.put("content", "");
mylist.add(map);
} else {
json_data = jArray.getJSONObject(i);
category[i] = json_data.getString("category");
map.put("id", "5");
map.put("name", " "+category[i]);
map.put("latitude", "");
map.put("longitude", "");
map.put("date", "");
map.put("content", "");
mylist.add(map);
}
} else if(i<jArray.length()+1) {
json_data = jArray.getJSONObject(i-1);
id = json_data.getInt("post_id");
name[i-1] = json_data.getString("username");
latitude = json_data.getDouble("latitude");
longitude = json_data.getDouble("longitude");
date[i-1] = json_data.getString("post_date");
content[i-1] = json_data.getString("post_content");
map.put("id", String.valueOf(id));
map.put("name", name[i-1] + " wrote:");
map.put("latitude", "Latitude: " + latitude);
map.put("longitude", "Longitude: " + longitude);
map.put("date", "Date: " + date[i-1]);
map.put("content", content[i-1]);
mylist.add(map);
}
if(i==jArray.length()+1) {
map.put("id", "5");
map.put("name", "");
map.put("latitude", "");
map.put("longitude", "");
map.put("date", "");
map.put("content", "");
mylist.add(map);
}
}
} catch(JSONException e1) {
Toast.makeText(getBaseContext(), "No posts found" ,Toast.LENGTH_LONG).show();
} catch (ParseException e1) {
e1.printStackTrace();
}
答案 0 :(得分:2)
需要解析JSON才能从中获取信息。因此,保存JSON-Request并在每次需要信息时解析它通常都是一个坏主意。
相反,您需要解析一次,获取所需信息,并将其保存在您可以轻松访问的位置。保存它们的位置和方式与您想要使用它的方式不同:
另外,你说你想把这些东西存放在外部存储器上。一般来说:在外部存储上存储属于您的应用程序的东西是个坏主意。然而,有些情况下它是有道理的:
ContentProvider
)请记住,可以操纵保存在外部存储设备上的每个文件!此外,您不能依赖外部存储,因为有些用户可能没有。
在上面列出的其他情况下,use the internal storage更好。
答案 1 :(得分:1)
您也可以使用内部存储空间,但如果您正在谈论大量数据和大量搜索,请使用集成在Android平台中的SQLite database。