JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON 采用完全独立于语言的文本格式,而且很多语言都提供了对json 的支持(包括C, C++, C#, Java, JavaScript, Perl, Python 等)。这样就使得JSON 成为理想的数据交换格式。
json是一种轻量级的数据交换格式。
轻量级指的是跟xml做比较。
数据交换指的是客户端和服务器之间业务数据的传递格式。
1、JSON
1.1 JSON 在JavaScript 中的使用。
1.1.1 、json 的定义
json 是由键值对组成,并且由花括号(大括号)包围。每个键由引号引起来,键和值之间使用冒号进行分隔,多组键值对之间进行逗号进行分隔。
json定义实例:
var jsonObj = {
"key1":12,
"key2":"abc",
"key3":true,
"key4":[11,"arr",false],
"key5":{
"username" : "小明",
"password" : "021211"
},
"key6":[
{"id":6611, "name":"小花"},
{"id":6621, "name":"晓彤"}
]
};
1.1.2 json 的访问
json 本身是一个对象。
json 中的key 我们可以理解为是对象中的一个属性。
json 中的key 访问就跟访问对象的属性一样:json 对象.key
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>index.html</h1>
</body>
</html>
<script>
//定义json数据
var jsonObj = {
"key1":12,
"key2":"abc",
"key3":true,
"key4":[11,"arr",false],
"key5":{
"username" : "小明",
"password" : "021211"
},
"key6":[
{"id":6611, "name":"小花"},
{"id":6621, "name":"晓彤"}
]
};
console.log(typeof(jsonObj));// object json 就是一个对象
console.log(jsonObj.key1); //12
console.log(jsonObj.key2); // abc
console.log(jsonObj.key3); // true
console.log(jsonObj.key4);
</script>
1.1.3 、json 的两个常用方法
json 的存在有两种形式。
一种是:对象的形式存在,我们叫它json 对象。
一种是:字符串的形式存在,我们叫它json 字符串。
一般我们要操作json 中的数据的时候,需要json 对象的格式。
一般我们要在客户端和服务器之间进行数据交换的时候,使用json 字符串。
JSON.stringify() 把json 对象转换成为json 字符串
JSON.parse() 把json 字符串转换成为json 对象
//定义json数据
var jsonObj = {
"key1":12,
"key2":"abc",
"key3":true,
"key4":[11,"arr",false],
"key5":{
"username" : "小明",
"password" : "021211"
},
"key6":[
{"id":6611, "name":"小花"},
{"id":6621, "name":"晓彤"}
]
};
//将json对象转换成json字符串
var jsonStr = JSON.stringify(jsonObj);
console.log(jsonStr)
console.log(typeof(jsonStr))
//将json字符串转成json对象
var jobj = JSON.parse(jsonStr);
console.log(typeof(jobj))
1.2 、JSON 在java 中的使用
实验需要用到的jar包
1.2.1 、javaBean 和json 的互转
javaBean对象转换成json字符串
有开源的jar包,创建一个gson对象调用toJson方法
public class JsonTest {
@Test
public void test1() {
//创建person对象,等会使用json对象,将它转换成json字符串
Person person = new Person(1,"小明不太好看", new Date(System.currentTimeMillis()));
//创建一个gson对象
//Gson gson = new Gson();
GsonBuilder gsonBuilder = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss");
Gson gson = gsonBuilder.create();
//调用toJson方法,将其转换成字符串
String str = gson.toJson(person);
System.out.println(str);
}
}
由于时间类型转换,不符合基本常识,所以使用GsonBuilder处理一下时间类型。
通过GsonBuilder对象创建Gson对象,因为创建GsonBuilder对象时可以设置日期格式。
GsonBuilder gsonBuilder = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss");
Gson gson = gsonBuilder.create();
1.2.2 、List 和json 的互转
@Test
public void test2(){
ArrayList<Person> perList = new ArrayList<>();
Person person1 = new Person(1,"小红",new Date(System.currentTimeMillis()));
Person person2 = new Person(2,"小张",new Date(System.currentTimeMillis()));
Person person3 = new Person(3,"小铁",new Date(System.currentTimeMillis()));
perList.add(person1);
perList.add(person2);
perList.add(person3);
//将preList集合转换成json字符串
GsonBuilder gsonBuilder = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss");
Gson gson = gsonBuilder.create();
String str = gson.toJson(perList);//将list集合转换成字符串
System.out.println(str);
}
1.2.3 、map 和json 的互转
@Test
public void test3(){
HashMap<Integer,Person> map = new HashMap<>();
Person person1 = new Person(1,"小红",new Date(System.currentTimeMillis()));
Person person2 = new Person(2,"小张",new Date(System.currentTimeMillis()));
Person person3 = new Person(3,"小铁",new Date(System.currentTimeMillis()));
map.put(1,person1);
map.put(2,person2);
map.put(3,person3);
//将HashMap对象转换成json字符串
GsonBuilder gsonBuilder = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss");
Gson gson = gsonBuilder.create();
String str = gson.toJson(map);
System.out.println(str);
}