频道澳门葡京手机版网址
登录注册
澳门葡京手机版网址 > 澳门葡京手机版网址 > 移动开发 > 其他 > 正文
JSON 构建和解析
2017-02-20 14:49:00      个评论    来源:Sunny的博客  
收藏   我要投稿

最近移动开发课程学到了JSON解析,想起去年十月一的时候,老班问我有没有用过OkHttp,有没有用过网上的开放接口解析JSON创建自己的APP,当时听得一脸懵逼啊。之后深觉需要发粪学习,直至今日,还是菜鸡一枚~(@^_^@)~

好在Android开发的基础常识还是及时补上了,对于JSON解析,也是用过挺多次的了,是时候做个总结了。写的简单点,希翼以前没了解过的童鞋能很轻松的从这篇博客里初步认识JSON,并学会去解析各种各样JSON格式的数据。

1. 那么什么是JSON呢?为什么要用JSON格式传递数据?

JSON是一种取代XML的数据交换格式,是相较于XML,JSON的数据文件更小,但表达能力却丝毫不弱。正因为它的小巧,在网络传输中,将需要更少的流量,从而也可以加快传输速度。

JSON就是一个字符串,只不过对象以及对象的元素(值)会使用特定的符号标注。下面简单看下JSON的语法:

{} // 双括号内表示一个对象

[] // 中括号内表示一个数组

"" // 双引号内表示属性或值

: // 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)

完整的JSON格式的数据,是这样的:

{"city":"Beijing","street":"Chaoyang Road","postcode":"100025","delicacy":["烤鸭","炸酱面"]}

其中需要注意的是,Object(对象)可以嵌套表示,如下:

{"name":"Michael","address":{"city":"Beijing","street":"Chaoyang Road","postcode":100025}}

2. 如何用Java代码构建一个JSON格式的数据?

废话不多说,直接看代码(别人跟我讨论什么问题,我就喜欢直接上代码, 理解起来会更快)

// 生成第一条JSON

private JSONObject createJSONObject1() {

JSONObject person = new JSONObject(); // 首先创建一个JSONObject 对象(person)

try {

person.put("name", "liweiyong"); // 在 person 中按照"键值"对应添加数据

person.put("age", 100);

JSONArray phone = new JSONArray(); // 创建一个JSONArray(数组)存储两个手机号码

phone.put("12345678"); // 向 JSONArray 中按照"键值"对应关系填入数据

phone.put("87654321");

person.put("phone", phone); // 将数组添加到 person 对象中

JSONObject address = new JSONObject(); // 创建一个新的 JSONObject 对象(address),存储家庭住址信息

address.put("country", "china"); // address 添加国家

address.put("province", "jiangsu"); // 添加省份

person.put("address", address); // 将 address 对象添加到 person 对象中,即嵌套对象

person.put("married", false);

} catch (JSONException e) {

e.printStackTrace();

}

return person;

}

上面每行代码几乎我都写了注释,稍微有一点Java基础的人相信也能一眼看得懂吧。

3. 如何用解析JSON格式的数据?

上代码!

// 解析第一条JSON

private String parseJSONObject1(String t) {

// 使用 StringBuilder 比 String 拼接字符串效率更高

StringBuilder date = new StringBuilder();

try {

JSONObject jsonObj = new JSONObject(t); // 将需要解析的JSON数据构建成JSONObject

String name = jsonObj.getString("name"); // 使用 getString(键) 方法得到 name 值

int age = jsonObj.getInt("age"); // 使用 getInt(键) 方法得到 name 值

JSONArray phone = jsonObj.getJSONArray("phone"); // 使用 getJSONArray(键) 得到 phone 数组

String[] phones = new String[phone.length()]; // 创建 phones 数组存储电话号码

for (int i = 0; i < phone.length(); i++) { // 对 phone 进行遍历

phones[i] = phone.get(i).toString();

}

JSONObject address = jsonObj.getJSONObject("address"); // 使用 getJSONObject(键) 得到嵌套的 address 对象

String country = address.getString("country"); // 下面类似,无非都是用 get 方法获取各种类型的数据

String province = address.getString("province");

Boolean married = jsonObj.getBoolean("married");

// 将上面获取到的数据拼接成字符串

date.append("name:" + " ");

date.append(name);

date.append("\n");

date.append("age:" + " ");

date.append(age);

date.append("\n");

date.append("phone:" + " ");

for (int i = 0; i < phones.length; i++) {

date.append(phones[i] + " ");

}

date.append("\n");

date.append("address:" + " ");

date.append(country + " ");

date.append(province);

date.append("\n");

date.append("married:" + " ");

date.append(married);

} catch (JSONException e) {

e.printStackTrace();

}

return date.toString();

}

还是很简单的吧,JSON解析无非就是先用JSON格式的字符串构建成JSONObject对象,然后再通过这个对象的get方法取出各种类型的值,数组,对象。

点击复制链接 与好友分享!回澳门葡京手机版网址澳门葡京手机版网址
上一篇:APP实用开发——TextSwitcher实现文本自动垂直滚动
下一篇:定时器的三种使用
相关文章
图文推荐

关于大家 | 联系大家 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 澳门葡京手机版网址_澳门新莆京娱乐_www.88807.com - 点此进入--致力于做实用的IT技术学习网站

XML 地图 | Sitemap 地图