JSON
一、简介
json:javaScript Object Notation,Java对象简谱。是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。
二、语法规则
(1)数据在名称/值对中;
(2)数据由逗号分隔;
(3)大括号{ }保存对象;
(4)中括号[ ]保存数组,数组中可以包含多个对象。
json数据书写格式:key : value 。
json值可以是数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true或false)、数组(在中括号中)、对象(在大括号中)、null。
三、格式
1.对象格式
(1)一个对象由一个大括号表示,括号中描述对象的属性,通过键值对来描述属性(可以理解为括号中包含的是一个个的键值对)。键与值之间使用冒号连接,多个键值对之间使用逗号分隔。键值对中的键,应该使用引号,因为通常Java解析时,键不使用引号会报错,而js能正确解析。
(2)案例
public class Book {
//图书名称
private String name;
//图书描述
private String info;
public Book(){}
public Book(String name,String info){
this.name = name;
this.info = info;
}
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;
}
}
//对象
Book book = new Book();
book.setName("平凡的世界");
book.setInfo("平凡人不平凡的一生");
//json
{
"name":"平凡的世界",
"info":"平凡人不平凡的一生"
}
2.数组格式
(1)[元素1,元素2,元素3……]
在json格式中可以与对象互相嵌套
(2)案例
public class Person{
private String name;
private int age;
//朋友
private Friends[] friends;
//宠物
private Pet pet;
}
{
"name":"张三",
"age":20,
"friends":["李四","王五","张大山",{
"name","空大师",
"age":22
}],
"pet":{
"name":"阿黄",
"age":2
}
}
四、Java与json
将Java中的对象快速的转换为JSON格式的字符串;
将JSON格式的字符串转换为Java的对象;
- Gson
(1)将对象转换为JSON字符串
a. 引入JAR包
b. 在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJson(要转换的对象);
案例:
public static void main(String[] args) {
Book book = new Book("平方的世界","平凡人不平凡的一生");
String json = new Gson().toJson(book);
System.out.println(json);
}
运行结果:
{"name":"平方的世界","info":"平凡人不平凡的一生"}
(2)将json字符串转换为对象
a. 引入JAR包
b. 在需要转换Java对象的位置,编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
案例:
public static void main(String[] args) {
String json = "{\"name\":\"平方的世界\",\"info\":\"平凡人不平凡的一生\"}";
Book book = new Gson().fromJson(json, Book.class);
System.out.println(book.toString());
}
运行结果:
Book{name='平方的世界', info='平凡人不平凡的一生'}
- FastJson
(1)将对象转换为JSON字符串
a. 引入JAR包
b. 在需要转换JSON字符串的位置编写如下代码即可:
String json = JSON.toJSONString(要转换的对象);
案例:
public static void main(String[] args) {
Book book = new Book("平凡的世界","平凡人不平凡的一生");
String json = JSON.toJSONString(book);
System.out.println(json);
}
运行结果:
{"info":"平凡人不平凡的一生","name":"平凡的世界"}
(2)将json字符串转换为对象
a. 引入JAR包
b. 在需要转换Java对象的位置,编写如下代码:
类型 对象名=JSON.parseObject(JSON字符串,类型.class);
或
List<类型> list = JSON.parseArray(JSON字符串,类型.class);
案例:
public static void main(String[] args) {
String json = "{\"info\":\"平凡人不平凡的一生\",\"name\":\"平凡的世界\"}";
Book book = JSON.parseObject(json,Book.class);
System.out.println(book);
}
运行结果:
Book{name='平凡的世界', info='平凡人不平凡的一生'}