1. JSON是什么?
官方:
JSON(JavaScript Object Notation:JavaScript 对象表示法), JS对象简谱 , 是一种轻量级的数据交换格式,能够在服务器之间交换数据,它基于 javascript 语法的子集,即数组和对象表示。简单的来说json本身是一串字符串,只是它有固定格式的字符串,符合这个数据格式要求的字符串,我们称之为JSON。
JSON是一个字符串,一个有规则的字符串。(重点)然后它的表现形式是键值对的。非常类似Java语言里的Map。
通俗:
计算机高级语言有很多种,如:Java,Python,C#,C++等。JSON就类似于一种通用语言,可以在支持不同语言的交流。
打比方:
中国人和挪威人交流,中国说中文,挪威说挪威语,所以它们之间需要一个既懂中文又懂挪威语的人;同理中国人和法国人交流,它们之间也需要一个既懂中文和法语的人。此时,如果我们选择将英语作为通用的交流语言,各个国家都配置一个既懂本国语言,又懂英语的翻译官,就可以实现与其他国家之间的无障碍交流。JSON就相当于其中的通用英语。
现在,可以只学一种编程语言,外加数据交互语言–JSON,就可以与其他任何语言的程序进行通讯。
2. 作用、优点与使用场景
作用:
将Java中的对象 快速的转换为 JSON格式的字符串。
将JSON格式的字符串, 转换为Java的对象。
优点:
- 简洁、简单、体积小;
- 上手容易,高效;
- 跨语言。目前移动端Android、IOS一般项目构造都是其他语言提供接口(JSON方式),移动端读取接口的方式开发;
- 获得了当今大部分语言的支持。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。JSON作为数据是目前网络中主流的数据传输格式之一,应用十分广泛。
使用场景:
- 目前移动端Android、IOS一般项目构造都是其他语言提供接口(JSON方式),移动端读取接口的方式开发;
- JSON不管是在Web开发还是服务器开发中是相当常见的数据传输格式,JS对JSON的支持好很多,与浏览器的交互中通常都用JSON。
JavaScript
简称JS,术语一点说,JS是一种页面脚本,通过执行程序脚本片段,我们可以对页面及页面上的元素进行操作,实现特定的功能与效果。有一些东西,我们用高级编程语言是实现不了的,而用JS,可能几行代码就可搞定。比如,显示当前系统时间等。
3. JSON的基本格式
1. 对象格式:
{ //大括号
"name":"金苹果", //键值对
"info":"种苹果"
}
说明:
一个对象, 由一个大括号表示;
大 括号中 描述对象的属性 . 通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对) ;
格式:键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.,最后一个键值对不需要逗号;
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解 析)
键值对的值, 可以是JS中的任意类型的数据。
2. 数组格式:
{
"name":"小美",
"age":18,
"pengyou":["张三","李四","王二","麻子",{ //数组里面嵌套对象
"name":"小明",
"info":"像匹野马一样狂奔在技术钻研的道路上"
}],
"heihei":{ //一个heihei对象
"name":"大长刀",
"length":"40m"
}
}
说明:
由一个中括号来表示定义,元素间用逗号隔开,
在JSON格式中可以与对象互相嵌套 [元素1,元素2…]
4. 常用JSON解析库Gson,FastJson
库:
在Java开发过程中如果需要使用json,必须得到外部支持,可以引入相关的jar包。
jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性以及方法。
库则是jar包的集合。
Gson
Gson是解析JSON的主流类库之一。最初由Google自行研发而来,公开发布第一版后被许多公司或用户应用。Gson是目前功能最全的Json解析神器,它的应用主要为toJson与fromJson两个转换函数,无依赖,不需要例外额外的jar,能够直接跑在JDK上。性能比较稳定。
FastJson
Fastjson是解析JSON的主流类库之一。由阿里巴巴公司开发。Fastjson是一个Java语言编写的高性能的JSON处理器,无依赖,不需要例外额外的jar,能够直接跑在JDK上。FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。用的比较多。
5. 举个栗子
Gson
将对象转换为JSON字符串
1. 引入JAR包 !
2. 在需要转换JSON字符串的位置编写如下代码:: ```java String json = new Gson().toJSON(要转换的对象); ```
案例:
Book b = new Book("001","小姑凉","吃盐焗鸡腿"); //初始化Book类对象b
String json = new Gson().toJson(b); //将b转成JSON
System.out.println(json);
结果:
将JSON字符串转换为对象
- 引入JAR包
- 在需要转换Java对象的位置, 编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
案例:
String json = "{"id":"001","name":"小姑凉","info":"吃盐焗鸡腿"}";
Book book = new Gson().fromJson(json, Book.class);
System.out.println(book);
结果: