为什么要使用JSON?
什么是JSON ?
JSON的优点
比较XML
XML 和 JSON 代码比较
JSON支持的数据类型
四种基础类型
两种结构类型
JSONArray类型
JSON的使用
JavasScript 使用
JS使用演示
JAVA使用
总结
为什么要使用JSON?
在微服务数据传输时,被要求使用JSON进行传输,想写一篇关于JSON的博客。
什么是JSON ?
百度百科
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
维基百科
JSON(JavaScript Object Notation,JavaScript对象表示法)是一种由道格拉斯·克罗克福特构想和设计、轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。
JSON 数据格式与语言无关,脱胎自JavaScript,但当前很多编程语言都支持 JSON 格式数据的生成和解析。JSON 的官方 MIME 类型是 application/json,文件扩展名是 .json。
JSON的优点
比较XML
JSON XML 结论
可读性 简易语法 规范的标签形式 平分秋色,不同场景下各有优势
可扩展性 可扩展 (比XML强) 可扩展 因为 JSON是JS标准的子集合,所以它在JS处理扩展时更优优势,可存储JS复合对象
编码难度 可编码 (比XML强) 支持Dom4j、Dom、SAX等 XML编码方式有很多,但是JSON也可以很快的编码,并且在代码量(对结构解析)上要较XML少
解码难度 平 平 各不相同,解码要看被解码的数据格式和编码规则,JSON和XML都遵循自己的解码方式
XML 和 JSON 代码比较
XML
JSON
{
“name”: “中国”,
“province”: [{
“name”: “黑龙江”,
“cities”: {
“city”: [“哈尔滨”, “大庆”]
}
}, {
“name”: “广东”,
“cities”: {
“city”: [“广州”, “深圳”, “珠海”]
}
}, {
“name”: “台湾”,
“cities”: {
“city”: [“台北”, “高雄”]
}
}, {
“name”: “新疆”,
“cities”: {
“city”: [“乌鲁木齐”]
}
}]
}
JSON代码层次更清晰更容易阅读。由于字符简洁,在数据传输过程中,JSON比XML更优秀,可减少传输数据所占用的宽带
JSON支持的数据类型
四种基础类型
字符串(String)
如:“A”,“B”
数字(Numbers)
如:1,2
布尔型(Booleans)
如:true / false
两种结构类型
对象
{K1,V1 : K2,V2 : K3,V3}
K为String类型,V为JSON支持的任意类型之一。并且键值对是无序的。
数组
[1,2,3]
顺序排列的零个或多个JSON数据类型
JSONArray类型
一个JSONArray有多个JSONObject,是我们在研发中常用的类型。
JSON的使用
介绍JavaScript和Java中的使用方式
JavasScript 使用
JSON格式是1999年《JavaScript Programming Language, Standard ECMA-262 3rd Edition》的子集合,所以可以在JavaScript以eval()函数(javascript通过eval()调用解析器)读入。
JS使用演示
/**
- JSON的序列化
*/
function test() {
// 定义一个JSON格式的字符换
var str = “{‘id’: 1, ‘name’:‘frank’, ‘sex’:1}”;
// 将JSON数组转换为JSON对象(适用于 IE8+、Firefox 3.5+、Chrome4+、/Safari4+、Opera10+ 浏览器)
var json = eval(str);
// 在不支持原生JSON对象的浏览器也可以使用parseJSON方法进行读取
var jsonPars = parseJSON(str);
// eval 和 parseJSON区别
// parseJSON采用解析器验证读入的代码是否真的是JSON代码,安全性更高。但是,由于这是用模拟的方式读取,速度比eval()慢;
}
/**
- 一个直接跳转的例子
*/
$(function(){
var json= eval("{message:(function (){ window.location=‘http://zh.wikipedia.org/wiki/JSON#.E5.AE.89.E5.85.A8.E6.80.A7.E5.95.8F.E9.A1.8C’; })()}");
});
JAVA使用
这里特指:com.alibaba.fastjson
工程中导入依赖
com.alibaba
fastjson
1.2.4
基本声明和放入元素
// 声明并实例化
JSONObject jsonObj = new JSONObject();
// 放入元素
jsonObj.put(“element”,“元素”);
// 序列化成JSON字符串
jsonObj.toJSONString();
//************************** 演示JSONArray的创建,放入元素和转换 *********************
// 创建JSON对象oneJson
JSONObject oneJson = new JSONObject();
oneJson.put(“one”, “一”);
// 创建JSON对象twoJson
JSONObject twoJson = new JSONObject();
twoJson.put(“two”, “二”);
// 声明并实例化Json数组,并把两个JSON对象放入
JSONArray numberJsonArr = new JSONArray();
numberJsonArr.add(oneJson);
numberJsonArr.add(twoJson);
// 将JSON数组转换为JSON字符串
String jsonArrayString = numberJsonArr.toJSONString();
// 将JSON字符串转换为JSON数组
JSONArray formatingJsonArray = JSONArray.parseArray(jsonArrayString);
总结
使用JSON的原因:
JSON数据清晰
JSON有很多工具类支持它的转换
JSON在所有主流浏览器有很好的支持
JSON在传输时数据量更小
JSON在JS中有天然的语言优势(因为它是标准的子集合)