什么是JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,而且都提供了对json的支持(C,C++,C#,JavaScript,Pyhton)。这样使得JSON称为理想的数据交换语言。
json轻量级是跟xml比较。
数据交换客户端和服务器之间的数据交换格式。
JSON在JavaScript中的使用
1. json的定义
json是由键值对组成,并且由花括号(大括号)
包围。每个键值由引号引起来,键和值之间使用冒泡进行分割,多组键值对之间进行逗号。json就是一个对象
<head>
<title>json</title>
<script type="text/javascript">
var a={
"key1":"values1",
"key2":"values2"
};
alert(a.key1);
</script>
</head>
2. json 的访问
json本身就是一个对象。
json中的key可以理解为是对象中的一个属性。
json中 的key就跟访问对象的属性是一个样的;
json
3. JSON的两个常用的方法
json的存在有两种形式:
一种是:对象的形式存在,叫json对象
一种是:字符串的形式存在,叫json字符串
需要json中的对象的时候需要json对象的格式。
需要在客户端和服务器之间进行数据交换的时候,使用json字符串。
JSON.stringify():把json对象转化为json字符串
JSON.parse():把json字符串转化为json对象
JSON在java中的使用
需要先导入json的jar包
javaBean和json的互转
public class Demo {
@Test
public void test1(){
Gson gson = new Gson();
Student stu = new Student("张三",18,"男");
//对象转化为字符串
String s = gson.toJson(stu);
//字符串转化为对象
Student student = gson.fromJson(s, Student.class);
System.out.println(student);
}
}
List和json的互转
如果将json转化为对象,只需要使用Student student = gson.fromJson(s, Student.class);
但是json转化为list的时候不能使用List.class
编译器会报错
这时候需要先新建一个类继承 TypeToken<>
在泛里写上需要转化的类型
public class StudentListType extends TypeToken<ArrayList<Student>> {
}
然后在后端写
//将字符串转化为list
Gson gson = new Gson();
List<Student> list1= gson.fromJson(s, new StudentListType().getType());
System.out.println(list1);
还有一种方式是采用匿名内部类,省去了在外部包下创建类
//将字符串转化为list----采用匿名内部类
List<Student> list1= gson.fromJson(s,new TypeToken<List<Student>>(){}.getType());
System.out.println(list1);
map和json的互转
采用匿名内部类转化
//Map和json字符串的转化
Map<Integer, Student> map = new HashMap<>();
map.put(1,new Student("李四",10,"女"));
map.put(2,new Student("王五",20,"男"));
//map转json
String s1 = gson.toJson(map);
System.out.println(s1);
//json转map
Object o = gson.fromJson(s1, new TypeToken<Map<Integer, Student>>() {
}.getType());
System.out.println(o);