什么是JSON
json是一种轻量级的数据交换格式,易于人的阅读和编写,也易于机器的解析和生成。很多语言包括C、C++、Java、JS、Python等都提供了对json的支持,这使得json成为理想的数据交换格式
轻量级是指与xml对比,数据交换是指客户端和服务器端之间业务数据的传递格式
JSON的定义和访问
定义:json由键值对组成,并由花括号包围;每个键由引号引起来,键和值之间使用冒号进行分隔,多组键值对之间使用逗号进行分隔
json.html
json中的key可以理解为对象的属性
JSON在JavaScript中两种常用的转换方法
json数据有两种存在形式,一种是json对象,一种是json字符串。JSON.stringify()将json对象转换为json字符串,JSON.parse()将json字符串转换为json对象。当要操作json中的数据时需要用json对象,当要在客户端和服务器端进行数据传递时需要用json字符串
JavaBean和json的相互转换
在服务器端使用json,需要先导入相应的包,add as library
package com.atguigu.pojo;
public class Person {
private Integer id;
private String name;
public Person() {
}
public Person(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
package com.atguigu.json;
import com.atguigu.pojo.Person;
import com.google.gson.Gson;
import org.junit.Test;
public class JsonTest {
public void test1() {
Person person = new Person(1, "刘德华");
Gson gson = new Gson();
String personJsonString = gson.toJson(person);
System.out.println(personJsonString); // {"id":1,"name":"刘德华"}
Person person1 = gson.fromJson(personJsonString, Person.class);
System.out.println(person1); // Person{id=1, name='刘德华'}
}
}
List集合和json的相互转换
package com.atguigu.json;
import com.atguigu.pojo.Person;
import com.google.gson.reflect.TypeToken;
import java.util.ArrayList;
public class PersonListType extends TypeToken<ArrayList<Person>> {
// TypeToken类是gson提供的专门用来处理json转List的,需要写一个类来继承它,这里什么都不用做,
// 给它传入的泛型是要转换的List,可以是List<Person>,也可以是具体的ArrayList<Person>
}
Map集合和json的相互转换
package com.atguigu.json;
import com.atguigu.pojo.Person;
import com.google.gson.reflect.TypeToken;
import java.util.HashMap;
public class PersonMapType extends TypeToken<HashMap<Integer, Person>> {
// 传入的泛型既可以是Map<Integer, Person>,也可以是HashMap<Integer, Person>
}
一种更简洁的方式是使用匿名内部类
// Map<Integer, Person> personMap1 = gson.fromJson(personMapJsonString, new PersonMapType().getType());
Map<Integer, Person> personMap1 = gson.fromJson(personMapJsonString, new TypeToken<HashMap<Integer, Person>>(){}.getType());