下面我们先看一段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解析相关推荐

  1. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  2. java中的json_JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

  3. android从服务端获取json解析显示在客户端上面,Android服务端获取json解析显示在客户端上面.doc...

    Android服务端获取json解析显示在客户端上面 Android从服务端获取json解析显示在客户端上面 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比 ...

  4. android post json格式,Android中post请求传递json数据给服务端的实例

    在最近的项目中有个需求是这样的: 入参封装成JSON,EXAMPLE: { "uuid": "iamauuid","clientType": ...

  5. Java开发中Netty线程模型原理解析!

    Java开发中Netty线程模型原理解析,Netty是Java领域有名的开源网络库具有高性能和高扩展性的特点,很多流行的框架都是基于它来构建.Netty 线程模型不是一成不变的,取决于用户的启动参数配 ...

  6. java 解析数据包_一种基于Java语言的网络通讯数据包解析方法与流程

    本发明涉及网络通讯领域,特别涉及一种基于Java语言的网络通讯数据包解析方法. 背景技术: 计算机系统和网络的大量普及使用使全球跨入了信息化时代.但是,正由于现代社会中几乎一切都在"计算机化 ...

  7. Android中XML的三种解析器分析、实战

    XML解析器介绍 Android中提供了三种方式来解析XML: SAX(simple API for XML) DOM(文档对象模型) 以及Android内部使用的Pull解析. SAX(simple ...

  8. java aes密钥生成_如何在Java(Android)中生成与.Net中相同的AES密钥?

    我需要从.Net WebService提供的salt和密码生成 Java( Android)中的AES密钥.我需要使用与.net生成的密钥相同的密钥和相同的密码和盐(使用Rfc2898DeriveBy ...

  9. cJSON_译(C中的超轻量级JSON解析器)

    cJSON ANSI C中的超轻量级JSON解析器. 通行证 执照 版权所有(c)2009-2017 Dave Gamble和cJSON贡献者 特此免费授予获得此软件和相关文档文件("软件& ...

最新文章

  1. Django之用户上传文件的参数配置
  2. Flexible Box布局基础知识详解
  3. 032_jQuery Ajax的load方法
  4. 【Alljoyn】Alljoyn学习笔记五 AllJoyn开源技术基础概念解析
  5. ReactNative的基本组件的认识
  6. Java 语法规定之外的命名注释规范
  7. PooledDirectByteBuf源码分析
  8. 世上最简单的mysql_mysql这样学最简单|基本操作上
  9. 【编程练习】复习一下树的遍历
  10. 从光波叠加到条纹分布的matlab仿真,matlab光学仿真实验 13171019
  11. 【English】20190313
  12. 俄亥俄州立大学计算机科学转学成功,俄亥俄州立大学转学要求
  13. 2012年之前Mac Book pro 安装新系统macOS 10.15 Catalina 制作U盘启动盘
  14. java-第十三章-类的无参方法(一)-模拟一个简单的购房商贷月供计算器
  15. STM32F103_study54_The punctual atoms(STM32 There have always been questions about learning STM32)
  16. 16 张图解 | 淘宝 10年架构演进
  17. ngx_shmtx_lock 分析
  18. ECCV 2022全奖项公布,两位华人学者摘得最佳论文奖,本科来自清华、浙大
  19. python用pandas读取excel_Python 中利用Pandas处理复杂的Excel数据
  20. Verify the connector‘s configuration, identify and stop any process that‘s listening on port 8911

热门文章

  1. cuter(cuter)
  2. 如何设置HTML背景特效,HTML5之按钮背景不同动画特效设计
  3. ROX-Filer 2.6
  4. 最值得期待的 5 个新特性解析JavaScript ES2021
  5. 第十二,十三周第12个容器架构
  6. 数据库系统发展的特点
  7. 数据结构实验课_实验四 队列
  8. python读取HTML文本文件
  9. 【采用】大数据风控---风险量化和风险定价
  10. 2022软工K班结对编程作业