android中Json的一些应用
JSON(JavaScript Object Notation) :一种轻量级的数据交换格式,基于JavaScript的一个子集。 JSON采用完全独立于语言的文本格式,使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)。作为一种数据交换格式,JSON优势很明显(相对与我们通常使用的XML):JSON比XML体积小;JSON和JavaScript交互更加方便;JSON的速度要远远大于XML;JSON的解析要比XML的解析要方便等。
JSON语法规则:
- 数据在名称/值(键值)对中
- 数据由逗号(,)分隔
- 花括号{}保存对象
- 方(中)括号[]保存数组 JSON 数据的书写格式是:名称/值对。名称主要是用加“”的字符串表示,值可以是多种格式,包括
- 数字(整数或浮点数)
- 字符串(在双引号("")中)
- 逻辑值(true 或 false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
下面是一个JSON格式的数示例:
{
"tel" : ["12345678", "87654321"], // 数组形式,以方括号保存
"name" : "tianjiefeng", // 字符串
"age" : 20, // 数值
"address" : { "country" : "china", "province" : "guangdong" }, // JSON对象,以花括号保存
"graduate" : true // 布尔值
}
那个Android开发中JSON格式的数据如何创建?又如何解析呢?首先举如何创建下面这个JSON的例子:
private JSONObject createJSONData() {
// 最外层是花括号{},所以就是一个JSONObject对象
JSONObject student = new JSONObject();
try {
// 第1个value是[ ],也就是一个JSONArray对象
JSONArray tel= new JSONArray();
phone.put("12345678");
phone.put("87654321");
person.put("tel", tel);
// 第2个value一个字符串
person.put("name", "tianjiefeng");
// 第3个value一个字符串数值
person.put("age", 20);
// 第4个value一个JSONObject对象
JSONObject address = new JSONObject();
address.put("country", "china");
address.put("province", "guangdong");
person.put("address", address);
// 第5个value一个布尔值
person.put("graduate", true);
} catch (JSONException e) {
e.printStackTrace();
}
return student ;
}
如果要返回String字符串,只需要修改为return student.toString();下面看下如何把上面的JSON数据解析出来:
private Map<String, Object> parseJSONData(String json) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
// 直接把JSON字符串转化为一个JSONObject对象
JSONObject student= new JSONObject(json);
// 第1个键值对
resultMap.put("tel", person.getJSONArray("tel").toString());
// 第2个键值对
resultMap.put("name", person.getString("name"));
// 第3个键值对
resultMap.put("age", person.getInt("age"));
// 第4个键值对
resultMap.put("address", person.getJSONObject("address").toString());
// 第5个键值对
resultMap.put("graduate", person.getBoolean("married"));
} catch (JSONException e) {
e.printStackTrace();
}
return resultMap;
}
} 上面就是用我们用JSONObject 及JSONArray进行数据操作。但在实际开发中,我们一般都会使用Gson解析JSON数据
首先,从 code.google.com/p/google-gson/downloads/list下载GsonAPI和相关jar包,然后通过GJSON封装的方法来处理数据。 Gson的解析非常简单,但是它的解析规则是必须有一个bean文件,这个bean文件的内容跟JSon数据类型是一一对应。Gson有两个重要的方法,一个就是tojson(tojson就是将bean里面的内容转换为json内容),一个就是fromjson(从我们的Json对象封装出一个一个的bean对象)。其简单的例子可以参考:http://blog.csdn.net/kongzhichen/article/details/10135051
补充知识:上面例子可以不看,看下面这个链接里面的讲的比较详细
http://www.open-open.com/lib/view/open1326376799874.html
http://www.open-open.com/doc/view/dcaf018b28a44ed188e84a07cfff080d
android中Json的一些应用的更多相关文章
- Android中Json数据读取与创建
一: Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项 ...
- Android中JSON数据格式的简单使用
源码: package com.wangzhu.demo; import java.io.BufferedReader; import java.io.IOException; import java ...
- Android中Json数据读取与创建的方法
转自:http://www.jb51.net/article/70875.htm 首先介绍下JSON的定义,JSON是JavaScript Object Notation的缩写. 一种轻量级的数据交换 ...
- Android 中Json解析的几种框架(Gson、Jackson、FastJson、LoganSquare)使用与对比
介绍 移动互联网产品与服务器端通信的数据格式,如果没有特殊的需求的话,一般选择使用JSON格式,Android系统也原生的提供了JSON解析的API,但是它的速度很慢,而且没有提供简介方便的接口来提高 ...
- android中Json数据保存方式
package com.example.savejsonproject; import java.io.File; import java.io.FileNotFoundException; impo ...
- Android中XML文件的序列化生成与解析
xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...
- Android学习记录(1)—Android中XML文件的序列化生成与解析
xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...
- Android 中的Json解析工具fastjson 、序列化、反序列化
Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备 ...
- Android中使用Gson解析JSON数据的两种方法
Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...
随机推荐
- DBN 入门学习资料整理
建议按序阅读 1.Deep Learning 概述 Deep Learning(深度学习)学习笔记整理系列 : http://blog.csdn.net/zouxy09/article/details ...
- 使用 FP-growth 算法高效挖掘海量数据中的频繁项集
前言 对于如何发现一个数据集中的频繁项集,前文讲解的经典 Apriori 算法能够做到. 然而,对于每个潜在的频繁项,它都要检索一遍数据集,这是比较低效的.在实际的大数据应用中,这么做就更不好了. 本 ...
- python 中md5 和 sha1 加密, md5 + os.urandom 生成全局唯一ID
首先先来介绍一下md5 和 sha1 的概念 MD5 MD5的全称是Message-Digest Algorithm 5(信息-摘要算法).128位长度.目前MD5是一种不可逆算法. 具有很高的安全性 ...
- sudo add-apt-repository no found解决方法
sudo apt-get install python-software-propertiessudo apt-get install software-properties-common
- Android Studio的简单设置:
4.关闭更新: 如下图所示: 6.添加api文档悬浮提示: AS默认是没有api文档悬浮提示的,只有按住[Ctrl+Q]太会出现提示.如果要添加api的自动悬浮提示,设置如下: 上图中,在红框部分打钩 ...
- 关于vue.js中表单控件绑定练习
html: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8 ...
- 【jq】c#零基础学习之路(4)抽象类和密封
一.抽象类 1.抽象类不能被实例化 2.抽象类方法必需要实现 3.如何类中函数为抽象函数,其类也需要定义成抽象类 4.关键字 abstract ,函数重写 override. 二.密封类 1.密封类不 ...
- P1834 种花小游戏
我只是想做壮鸭低劈啊,为什么只有状压没有DP-- 原题: 植物大战僵尸这款游戏中,还有个特别有意思的赚钱方式--种花(能长金币的花).种出来的金币需要玩家点击才能得到,或者,玩家可以购买一只蜗牛来帮助 ...
- Quartus II 与 Modelsim 联调【转】
Quartus II 9.0版本的时候软件还有自带的仿真工具,现在安装的是11.0以上版本,才发现 Quartus II 11.0以上取消了软件自带的波形仿真工具,因此需要波形仿真就要调用专业的仿真工 ...
- sql中的跨库查询
在sql查询时,需要关联2个服务器上的不同数据库,只需要在所需查询的表名前加上服务器地址即可. 例如:在 192.168.0.15,8020的db110库 和 192.168.0.150,8082的d ...