java,android中网络数据获取和json解析
下面我们先看一段json:
{"showapi_res_code":0,"showapi_res_error":"","showapi_res_body":{"allNum":113,"allPages":113,"contentlist":[{"ct":"2015-10-16 21:10:15.168","text":"说个停车的事吧。有次和同学开车去商场进地下停车场,那是新建的新型带上下层的停车位。下层有个台阶不好停,地方又小,倒了半天倒不正!后面车的哥哥就一直等着在。后来哥哥也没催我们,后来还主动帮我们倒。这时开出来一辆Q7觉得我们挡他路了,就拼命的按喇叭,一声接一声的。按他老母啊,没点素质的土鳖。要不是我打不过他,真想揍他一顿。","title":"说个停车的事吧","type":1}],"currentPage":1,"maxResult":1,"ret_code":0}}
大括号代表jsonobject
方括号代表jsonarray
下边是获取中间text的内容案例(说个停车的是吧...)
JSONArray jsonObjs=new JSONObject(s).getJSONObject("showapi_res_body").getJSONArray("contentlist");
JSONObject jsonObj =(JSONObject)jsonObjs.get(0);
jsonObj.getString("text");
**********************************************************到这里解析原理算是介绍完了。
一.获取网络json
下边是http请求,两个方法
**************代码开始
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;public class HttpRequest {/*** 向指定URL发送GET方法的请求* * @param url* 发送请求的URL* @param param* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return URL 所代表远程资源的响应结果*/public static String Get(String url, String param) {String result = "";BufferedReader in = null;try {String urlNameString = url + "?" + param;URL realUrl = new URL(urlNameString);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");connection.setRequestProperty("charsert", "utf-8");// 建立实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.out.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/*** 向指定 URL 发送POST方法的请求* * @param url* 发送请求的 URL* @param param* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return 所代表远程资源的响应结果*/public static String Post(String url, String param) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");conn.setRequestProperty("charsert", "utf-8");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!"+e);e.printStackTrace();}//使用finally块来关闭输出流、输入流finally{try{if(out!=null){out.close();}if(in!=null){in.close();}}catch(IOException ex){ex.printStackTrace();}}return result;}
}
**************代码结束
二.解析数据
需要引入包 json.org.jar ,点击下载。
简单的数据解析:
String str = HttpRequest.Get("http://www.xxxxx.com/xxx.php", id=1&type=23);
JSONArray jsonObjs= new JSONObject(s).getJSONObject("showapi_res_body").getJSONArray("contentlist");
JSONObject jsonObj = (JSONObject)jsonObjs.get(0);
string=jsonObj.getString("text");
完全解析:
首先需要自己定义一个News Model,解析后存储于List<News>
private List<News> parseJsonMulti(String strResult) { List<News> newsList=new ArrayList<News>();try { JSONArray jsonObjs= new JSONObject(strResult).getJSONObject("showapi_res_body").getJSONArray("contentlist");for(int i = 0; i < jsonObjs.length() ; i++){ JSONObject jsonObj = (JSONObject)jsonObjs.get(i); News ne=new News();ne.setTime( jsonObj.getString("ct")); ne.setTitle(jsonObj.getString("title")); ne.setText( jsonObj.getString("text").replaceAll("</p><p>", "\n")); newsList.add(ne);} } catch (JSONException e) { e.printStackTrace(); } return newsList;}
本案例完整打包:点击下载.rar
java,android中网络数据获取和json解析相关推荐
- java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...
1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...
- java中的json_JAVA中的四种JSON解析方式详解
JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...
- android从服务端获取json解析显示在客户端上面,Android服务端获取json解析显示在客户端上面.doc...
Android服务端获取json解析显示在客户端上面 Android从服务端获取json解析显示在客户端上面 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比 ...
- android post json格式,Android中post请求传递json数据给服务端的实例
在最近的项目中有个需求是这样的: 入参封装成JSON,EXAMPLE: { "uuid": "iamauuid","clientType": ...
- Java开发中Netty线程模型原理解析!
Java开发中Netty线程模型原理解析,Netty是Java领域有名的开源网络库具有高性能和高扩展性的特点,很多流行的框架都是基于它来构建.Netty 线程模型不是一成不变的,取决于用户的启动参数配 ...
- java 解析数据包_一种基于Java语言的网络通讯数据包解析方法与流程
本发明涉及网络通讯领域,特别涉及一种基于Java语言的网络通讯数据包解析方法. 背景技术: 计算机系统和网络的大量普及使用使全球跨入了信息化时代.但是,正由于现代社会中几乎一切都在"计算机化 ...
- Android中XML的三种解析器分析、实战
XML解析器介绍 Android中提供了三种方式来解析XML: SAX(simple API for XML) DOM(文档对象模型) 以及Android内部使用的Pull解析. SAX(simple ...
- java aes密钥生成_如何在Java(Android)中生成与.Net中相同的AES密钥?
我需要从.Net WebService提供的salt和密码生成 Java( Android)中的AES密钥.我需要使用与.net生成的密钥相同的密钥和相同的密码和盐(使用Rfc2898DeriveBy ...
- cJSON_译(C中的超轻量级JSON解析器)
cJSON ANSI C中的超轻量级JSON解析器. 通行证 执照 版权所有(c)2009-2017 Dave Gamble和cJSON贡献者 特此免费授予获得此软件和相关文档文件("软件& ...
最新文章
- Django之用户上传文件的参数配置
- Flexible Box布局基础知识详解
- 032_jQuery Ajax的load方法
- 【Alljoyn】Alljoyn学习笔记五 AllJoyn开源技术基础概念解析
- ReactNative的基本组件的认识
- Java 语法规定之外的命名注释规范
- PooledDirectByteBuf源码分析
- 世上最简单的mysql_mysql这样学最简单|基本操作上
- 【编程练习】复习一下树的遍历
- 从光波叠加到条纹分布的matlab仿真,matlab光学仿真实验 13171019
- 【English】20190313
- 俄亥俄州立大学计算机科学转学成功,俄亥俄州立大学转学要求
- 2012年之前Mac Book pro 安装新系统macOS 10.15 Catalina 制作U盘启动盘
- java-第十三章-类的无参方法(一)-模拟一个简单的购房商贷月供计算器
- STM32F103_study54_The punctual atoms(STM32 There have always been questions about learning STM32)
- 16 张图解 | 淘宝 10年架构演进
- ngx_shmtx_lock 分析
- ECCV 2022全奖项公布,两位华人学者摘得最佳论文奖,本科来自清华、浙大
- python用pandas读取excel_Python 中利用Pandas处理复杂的Excel数据
- Verify the connector‘s configuration, identify and stop any process that‘s listening on port 8911