Android JSON 解析关键代码
Android Json 解析其实还是蛮重要的知识点,为什么这么说呢,因为安卓通信大部分的协议都是使用 json 的方式传输,我知道以前大部分是使用的 xml ,但是时代在发展社会在进步,json 成为了主流,那 json 解析就显得尤为重要。
json的形式在我看来就是键值对集合,所以关键就是 json字符串转换为 json对象,和 json对象转换为 json字符串。
网站提供给Android的API接口返回的都是json格式字符串,所以说呢,安卓调用API(例如天气的API接口)接口开发的必经之路就是将网站返回的json格式字符串转化为json对象,我们在用的时候就可以.属性(点 属性)的方式把需要的值给找出来。
期初我想要的是没有 [ ] 括起来的json字符串,还没有实验成功,但是找到了有括号括起来的json字符串,没问题了!
Json 解析(最外层有 【 】包成列表的形式 ):
[{"id":"","version":"5.5","name":"愤怒的小鸟"},
{"id":"","version":"7.0","name":"神庙逃亡"},
{"id":"","version":"3.5","name":"保卫萝卜"}]
将上面 json 格式字符串转化为 json 对象:
private void parseJSONWithJSONObject(String jsonData) {
try {
JSONArray jsonArray = new JSONArray(jsonData);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String id = jsonObject.getString("id");
String name = jsonObject.getString("name");
String version = jsonObject.getString("version");
Log.d("woider", "id is " + id);
Log.d("woider", "name is " + name);
Log.d("woider", "version is " + version);
}
} catch (Exception e) {
e.printStackTrace();
}
}
以上就是含有 [ ] 包裹成列表形式的json字符串解析的关键代码。
********************* 手动分割线 ***************************
那么有些时候,例如天气的API接口没有最外层的方括号包裹,单纯的一条json数据怎么办?我也找到案例了,哈哈哈~~
json 字符串:
{
"user":{
"name":"wjw",
"age":"20",
"isMan":true
}
}
Android Json解析的代码案例:
public class OrgJSONTest {
public static String json = "{\"user\":{\"name\":\"wjw\",\"age\":\"20\",\"isMan\":true}}";
public static void main(String[] args){
JSONObject obj = new JSONObject(json);//最外层的JSONObject对象
JSONObject user = obj.getJSONObject("user");//通过user字段获取其所包含的JSONObject对象
String name = user.getString("name");//通过name字段获取其所包含的字符串
System.out.println(name);
}
}
OK!那么Android的json解析基础基本上没问题了,至于json字符串转对象还没有这么用到过,用到的时候在做笔记吧!
******************************* 手动分割线 ************************************
另外提供一个 天气 的API接口:
天气API接口 : 这个接口呢,在我发博的时候还是可以用的,做一些基础的练习是没有问题的。
下面其中有一个请求北京天气是返回的数据:
{"date":"20180420","message":"Success !","status":200,"city":"北京","count":485,"data":{"shidu":"58%","pm25":84.0,"pm10":152.0,"quality":"轻度污染","wendu":"19","ganmao":"儿童、老年人及心脏、呼吸系统疾病患者人群应减少长时间或高强度户外锻炼","yesterday":{"date":"19日星期四","sunrise":"05:33","high":"高温 26.0℃","low":"低温 13.0℃","sunset":"18:56","aqi":150.0,"fx":"东南风","fl":"4-5级","type":"多云","notice":"阴晴之间,谨防紫外线侵扰"},"forecast":[{"date":"20日星期五","sunrise":"05:32","high":"高温 28.0℃","low":"低温 14.0℃","sunset":"18:57","aqi":103.0,"fx":"南风","fl":"4-5级","type":"多云","notice":"阴晴之间,谨防紫外线侵扰"},{"date":"21日星期六","sunrise":"05:30","high":"高温 17.0℃","low":"低温 12.0℃","sunset":"18:58","aqi":111.0,"fx":"东北风","fl":"3-4级","type":"中雨","notice":"记得随身携带雨伞哦"},{"date":"22日星期日","sunrise":"05:29","high":"高温 20.0℃","low":"低温 11.0℃","sunset":"18:59","aqi":36.0,"fx":"北风","fl":"3-4级","type":"多云","notice":"阴晴之间,谨防紫外线侵扰"},{"date":"23日星期一","sunrise":"05:28","high":"高温 20.0℃","low":"低温 9.0℃","sunset":"19:00","aqi":29.0,"fx":"东北风","fl":"3-4级","type":"多云","notice":"阴晴之间,谨防紫外线侵扰"},{"date":"24日星期二","sunrise":"05:26","high":"高温 24.0℃","low":"低温 10.0℃","sunset":"19:01","aqi":33.0,"fx":"西南风","fl":"3-4级","type":"晴","notice":"愿你拥有比阳光明媚的心情"}]}}
Android JSON 解析关键代码的更多相关文章
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...
- android json 解析简单实例
Android JSON解析跟JAVA 的JSON解析原理是一样的. Android自带的JSON方式跟方便,不需要导包啥的.不深究原理了,直接上代码: public class JsonActivi ...
- android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】
android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ...
- Android Json解析与总结
一.JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...
- android Json解析详解(详细代码)
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
- android json解析及简单例子
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
- Android JSON 解析库的使用 - Gson 和 fast-json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...
- android Json解析详解
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语 言的支持),从而可以在不同平台间进行数 ...
- android json 解析 简单示例
1 下面是一个简单的json 解析的demo,废话不多说,直接上代码 package com.sky.gallery; import java.io.ByteArrayOutputStream; im ...
随机推荐
- 启用yarn日志聚集功能
在yarn-site.xml配置文件中添加如下内容: ##开启日志聚集功能 <property> <name>yarn.log-ag ...
- _cs, _ci, or _bin,
High Performance MySQL, Third Edition by Baron Schwartz, Peter Zaitsev, and Vadim Tkachenko http:/ ...
- IRC and security tools
login::: /msg NickServ identify <password>. join::: /join #metasploit 浏览器: Tor操作系统: Tails加 ...
- Vue源码学习1——Vue构造函数
Vue源码学习1--Vue构造函数 这是我第一次正式阅读大型框架源码,刚开始的时候完全不知道该如何入手.Vue源码clone下来之后这么多文件夹,Vue的这么多方法和概念都在哪,完全没有头绪.现在也只 ...
- 【python-opencv】22-直方图
直方图目录: 22.1 直方图的计算,绘制与分析 22.1.1 统计直方图 22.1.2 绘制直方图 22.1.3 使用掩膜(遮罩) 22.2 直方图均衡化 22.2.1 OpenCV中的直方图均衡化 ...
- linux,centOS,用LNMP搭建wordpress,更新固定连接--全流程
下午到晚上的时间,买了个linux服务器,用的centOS系统,遇到各种问题! 1.用putty,ssh到vps后,根据网上命令,一步步下载并安装,具体步骤可以看一下网上教程,LNMP.org站上的教 ...
- 一次性从git远程仓库中克隆到本地。
自动化工具 一次性从git远程仓库中克隆到本地. import os # git操作 将远程repo克隆到本地 def git_clone_cd_pull(url): # 获取仓库名称 如fullsp ...
- 控制div显示隐藏(有文字图片介绍)
<div class="toggle"> <p id="zi">收起</p> <p id="zhe" ...
- [vue]计算和侦听属性(computed&watch)
先看一下计算属性 vue只有data区的数据才具备响应式的功能. 计算和侦听属性 - v-text里可以写一些逻辑 <div id="example"> {{ mess ...
- POJ2488:A Knight's Journey(dfs)
http://poj.org/problem?id=2488 Description Background The knight is getting bored of seeing the same ...