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 解析关键代码的更多相关文章

  1. Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

    Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...

  2. android json 解析简单实例

    Android JSON解析跟JAVA 的JSON解析原理是一样的. Android自带的JSON方式跟方便,不需要导包啥的.不深究原理了,直接上代码: public class JsonActivi ...

  3. android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】

    android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ...

  4. Android Json解析与总结

    一.JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...

  5. android Json解析详解(详细代码)

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  6. android json解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  7. Android JSON 解析库的使用 - Gson 和 fast-json

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  8. android Json解析详解

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语 言的支持),从而可以在不同平台间进行数 ...

  9. android json 解析 简单示例

    1 下面是一个简单的json 解析的demo,废话不多说,直接上代码 package com.sky.gallery; import java.io.ByteArrayOutputStream; im ...

随机推荐

  1. 三种邻接表存图模板:vector邻接表、数组邻接表、链式前向星

    vector邻接表: ; struct Edge{ int u,v,w; Edge(int _u=0,int _v=0,int _w=0){u=_u,v=_v,w=_w;} }; vector< ...

  2. TensorFlow 度量张量和张量或者和零之间的误差值

    用于一个回归任务或者正则问题 # l2损失,output= sum(x ** 2)/2 inputdata = tf.Variable(np.random.rand(2,3), dtype=np.fl ...

  3. PL/SQL常用表达式及举例(二)

    使用LOOP循环 declare v_i number:=1; begin loop dbms_output.put_line('v_i='||v_i); exit when v_i>=3; v ...

  4. 匿名内部类的参数引用只能是final,可能遇到的问题及其解决

    这个是我碰到比较多次的问题,一开始是不解,不过查了下大家都觉得没什么,而且只是加个final好像影响也不大,于是我就直接加个final了事,之后也不管了 直到昨天: 遇到了这个宿命般的问题 难道解决方 ...

  5. 如何bitbucket上删除项目

    老外网页操作习惯不同,删除项目的按钮,我花了半天,突然瞟到delete,如下图(真他妈的隐蔽,记住这2017/3/7):

  6. Hat's Fibonacci

    http://acm.hdu.edu.cn/showproblem.php?pid=1250 大数斐波那契 %08d是什么东西,为什么我用flag交不上,唉,不刷大数了,没劲.暑假再讲. 就是交不上 ...

  7. soapUI-Properties

    1.1.1  Properties 1.1.1.1 概述 - Properties Option Description   Toolbar 属性TestStep工具栏   Properties Li ...

  8. [LeetCode] 429. N-ary Tree Level Order Traversal_ Easy

    Given an n-ary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  9. Lintcode: Heapify && Summary: Heap

    Given an integer array, heapify it into a min-heap array. For a heap array A, A[0] is the root of he ...

  10. HOW TO: 在 Visual C# .NET 应用程序中提供文件拖放功能

    本文假定您熟悉下列主题: Windows 窗体列表框控件 Windows 窗体事件处理 生成示例的步骤 列表框控件提供了您需要处理的两个拖放事件: DragEnter 和 DragDrop. 当您在控 ...