android url.parse,Android parse json from url and store it

本文探讨了从URL高效解析JSON数据的最优方法,并介绍了如何持久化存储以便跨应用访问。推荐使用GSON进行简单快速的序列化和反序列化,同时提到将JSONObject保存到文件或SQLite数据库的选项。
摘要由CSDN通过智能技术生成

可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):

问题:

Hi there i'm creating my first android app and i'm wanting to know what is the best and most efficient way of parsing a JSON Feed from a URL.Also Ideally i want to store it somewhere so i can keep going back to it in different parts of the app. I have looked everywhere and found lots of different ways of doing it and i'm not sure which to go for. In your opinion whats the best way of parsing json efficiently and easily?

回答1:

I'd side with whatsthebeef on this one, grab the data and then serialize to disk.

The code below shows the first stage, grabbing and parsing your JSON into a JSON Object and saving to disk

// Create a new HTTP Client

DefaultHttpClient defaultClient = new DefaultHttpClient();

// Setup the get request

HttpGet httpGetRequest = new HttpGet("http://example.json");

// Execute the request in the client

HttpResponse httpResponse = defaultClient.execute(httpGetRequest);

// Grab the response

BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8"));

String json = reader.readLine();

// Instantiate a JSON object from the request response

JSONObject jsonObject = new JSONObject(json);

// Save the JSONOvject

ObjectOutput out = new ObjectOutputStream(new FileOutputStream(new File(getCacheDir(),"")+"cacheFile.srl"));

out.writeObject( jsonObject );

out.close();

Once you have the JSONObject serialized and save to disk, you can load it back in any time using:

// Load in an object

ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(new File(getCacheDir(),"")+"cacheFile.srl")));

JSONObject jsonObject = (JSONObject) in.readObject();

in.close();

回答2:

Your best bet is probably GSON

It's simple, very fast, easy to serialize and deserialize between json objects and POJO, customizable, although generally it's not necessary and it is set to appear in the ADK soon. In the meantime you can just import it into your app. There are other libraries out there but this is almost certainly the best place to start for someone new to android and json processing and for that matter just about everyone else.

If you want to persist you data so you don't have to download it every time you need it, you can deserialize your json into a java object (using GSON) and use ORMLite to simply push your objects into a sqlite database. Alternatively you can save your json objects to a file (perhaps in the cache directory)and then use GSON as the ORM.

回答3:

This is pretty straightforward example using a listview to display the data. I use very similar code to display data but I have a custom adapter. If you are just using text and data it would work fine. If you want something more robust you can use lazy loader/image manager for images.

回答4:

Since an http request is time consuming, using an async task will be the best idea. Otherwise the main thread may throw errors. The class shown below can do the download asynchronously

private class jsonLoad extends AsyncTask {

@Override

protected String doInBackground(String... urls) {

String response = "";

for (String url : urls) {

DefaultHttpClient client = new DefaultHttpClient();

HttpGet httpGet = new HttpGet(url);

try {

HttpResponse execute = client.execute(httpGet);

InputStream content = execute.getEntity().getContent();

BufferedReader buffer = new BufferedReader(new InputStreamReader(content));

String s = "";

while ((s = buffer.readLine()) != null) {

response += s;

}

} catch (Exception e) {

e.printStackTrace();

}

}

return response;

}

@Override

protected void onPostExecute(String result) {

// Instantiate a JSON object from the request response

try {

JSONObject jsonObject = new JSONObject(result);

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

File file = new File(getApplicationContext().getFilesDir(),"nowList.cache");

try {

file.createNewFile();

FileOutputStream writer = openFileOutput(file.getName(), Context.MODE_PRIVATE);

writer.write(result);

writer.flush();

writer.close();

}

catch (IOException e) { e.printStackTrace(); return false; }

}

}

Unlike the other answer, here the downloaded json string itself is saved in file. So Serialization is not necessary

Now loading the json from url can be done by calling

jsonLoad jtask=new jsonLoad ();

jtask.doInBackground("http:www.json.com/urJsonFile.json");

this will save the contents to the file.

To open the saved json string

File file = new File(getApplicationContext().getFilesDir(),"nowList.cache");

StringBuilder text = new StringBuilder();

try {

BufferedReader br = new BufferedReader(new FileReader(file));

String line;

while ((line = br.readLine()) != null) {

text.append(line);

text.append('\n');

}

br.close();

}

catch (IOException e) {

//print log

}

JSONObject jsonObject = new JSONObject(text);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值