Json在传输数据的时候要比XML效率高一些
简介:JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.
对象格式
一本书
书名
简介
Java中的格式
class Book{
private String name;
private String info;
get/set...
}
Book b = new Book();
b.setName(“三国演义”);
b.setInfo(“争天下”);
js的写法
js:
var b = new Object();
b.name = "三国演义";
b.info = "争天下";
XML的写法
XML:
<book>
<name>金苹果</name>
<info>种苹果</info>
</book>
JSON的写法
大括号就表示一个对象
JSON:
{
"name":"金苹果",
"info":"种苹果"
}
使用规则
一个对象, 由一个大括号表示.
括号中 描述对象的属性 . 通过键值对来描述对象的属性
(可以理解为, 大括号中, 包含的是一个个的键值对.)
格式:
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解
析.)
键值对的值, 可以是JS中的任意类型的数据
数组格式
在JSON格式中可以与对象互相嵌套 [元素1,元素2…]
例如
{
"name":"张无",
"age":18,
"pengyou":["张三","李四","王二","麻子",{
"name":"赵四",
"info":"魔性"
}],
"heihei":{
"name":"大长刀",
"length":"40m"
}
}
例如找一个免费的API开放平台
https://wx.jdcloud.com/market/datas/26/10610
然后找一个json解析平台
https://www.bejson.com/jsonviewernew/
然后点开Json视图,解析如图层级关系如图
JSON解析主要有两种一种是Google的Gson,另一种是阿里的FastJson
一般Gson的效果会好一点‘
JSON解析的作用’
将Java中的对象 快速的转换为 JSON格式的字符串. 将JSON格式的字符串, 转换为Java的对象.>
因为Java官方没有封装相应的jar包,所以需要自己下载相应的包导入,在博客的下载链接中有一个json的压缩包,我已经上传 了需要的可以下载里边包含了Gson的包和FastJson的jar包
Gson使用方式
将对象转换为JSON字符串
转换JSON字符串的步骤:
- 引入JAR包
- 在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的对象);
案例:
导入json jar包的方式
没有lib文件夹的情况下先创建一个lib文件夹然后导入jar包
将对象转换为JSON字符串
import com.google.gson.Gson;
public class Demo {
public static void main(String[] args) {
//1创建Gson对象
Gson g=new Gson();
// 2 转换
Book b=new Book(1,"三国演义","三国纷争");
String s=g.toJson(b);
System.out.println(s);
}
}
class Book{
private int id;
private String name;
private String info;
public Book(int id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
public Book() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
}
将字符串转换回对象去
import com.google.gson.Gson;
public class Demo {
public static void main(String[] args) {
//1创建Gson对象
Gson g=new Gson();
// 2 转换 将字符串转换回对象去 "id":1,"name":"三国演义","info":"三国纷争"
/* Book b=new Book(1,"三国演义","三国纷争");
String s=g.toJson(b);
System.out.println(s);*/
Book b=g.fromJson("{\"id\":1,\"name\":\"三国演义\",\"info\":\"三国纷争\"}",Book.class);
System.out.println(b.getName());
}
}
class Book{
private int id;
private String name;
private String info;
public Book(int id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
public Book() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
}
import com.google.gson.Gson;
public class Demo {
public static void main(String[] args) {
//如果对象只使用一次,那么就可以用匿名类型
Book b=new Book(1,"三国演义","三国纷争");
String s=new Gson().toJson(b);
System.out.println(s);
}
}
class Book{
private int id;
private String name;
private String info;
public Book(int id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
public Book() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
}
转集合的方式,案例
import com.google.gson.Gson;
import java.util.HashMap;
public class Demo {
public static void main(String[] args) {
//将字符串转换为集合的形式
Gson g=new Gson();
//2转换
HashMap data=g.fromJson("{\"id\":1,\"name\":\"三国演义\",\"info\":\"三国纷争\"}", HashMap.class);
System.out.println(data.get("name"));
}
}
class Book{
private int id;
private String name;
private String info;
public Book(int id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
public Book() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
}
在对象中添加一个数组此时,在转的时候会转成ArrayList
import com.google.gson.Gson;
import java.util.HashMap;
import java.util.List;
public class Demo {
public static void main(String[] args) {
//将字符串转换为集合的形式
Gson g=new Gson();
//2转换 {"id":1,"name":"三国演义","info":"三国纷争,","page":["床前明月光","疑是地上霜"]}
HashMap data=g.fromJson("{\"id\":1,\"name\":\"三国演义\",\"info\":\"三国纷争,\",\"page\":[\"床前明月光\",\"疑是地上霜\"]}", HashMap.class);
System.out.println(data.get("page"));
System.out.println(data.get("page").getClass());
List page= (List) data.get("page");
System.out.println(page.get(1));
}
}
class Book{
private int id;
private String name;
private String info;
public Book(int id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
public Book() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
}
使用FastJson
转换为字符串,再由字符串转换为对象
import com.alibaba.fastjson.JSON;
public class Demo {
public static void main(String[] args) {
//FastJson 的使用
Book b=new Book(10,"水浒传","英雄好汉");
String json= JSON.toJSONString(b);
System.out.println(json);
//转换成对象
JSON.parseObject("{\"id\":10,\"info\":\"英雄好汉\",\"name\":\"水浒传\"}",Book.class);
System.out.println(b.getName());
}
}
class Book{
private int id;
private String name;
private String info;
public Book(int id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
public Book() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
}
把数组转换为集合
import com.alibaba.fastjson.JSON;
import java.util.List;
public class Demo {
public static void main(String[] args) {
//FastJson 的使用
//转换为集合 ["123", "456" ,"789"]
List string=JSON.parseArray(" [\"123\", \"456\" ,\"789\"]",String.class);
System.out.println(string.get(1));
}
}