javaweb学习笔记 JSON篇
程序员文章站
2024-02-04 19:03:58
...
JSON
1.什么是JSON
JSON(Javascript Object Notation)是一种轻量级的数据交换格式,易于人的阅读和编写,同时易于机器的解析和生成,JSON采用完全独立于语言的文本格式,而且很多语言都提供了对json的支持,这样使得jspn成为了理想的数据交换语言
json是一种轻量级的数据交换格式
轻量级指的是跟xml作比较,
数据交换指的是客户端和服务器之间业务交换数据的传输格式,
1.1JSON在JavaScript中的使用
1.1.1 JSON的定义
JSON是由键值对组成,并且由花括号(大括号)包围,每个键由引号引起来,键和值之间可以用冒号分割,每组键值对使用逗号进行分割
var jsonobj={
"key1":12,
"key2":"abc",
"key3": true,
"key4":[11,"abc",false]
"key5":{
"key5_1":551,
"key5_2": "key5_2value"
},
"key6":[{
"key 6_1_1":6611,
"key_6_1_2":"key6_1_2value"
}, {
"key 6_2_1":6621,
"key_6_2_2":"key6_2_2value"
}]
}
1.1.2 json的访问
json本身是一个对象
json中的key我们可以理解为是对象中的一个属性
json中的key访问就跟访问对象的属性一样 json对象.key
// json的访问
alert(jsonobj.key1);//12
alert(jsonobj.key2);//abc
alert(jsonobj.key3);//true
alert(jsonobj.key4);//得到数组 [11,"abc",false],
for (var i = 0; i < jsonobj.key4.length; i++) {
alert(jsonobj.key4[i]);
}//数组的遍历
alert(jsonobj.key5.key5_1); //访问json是json对象的value
alert(jsonobj.key5.key5_2);
for (var i = 0; i < jsonobj.key6.length; i++) {
//取出来每一个元素都是json对象
var jsonItem = jsonobj.key6[0];
alert (jsonItem.key_6_1_2);
alert(jsonItem.key6_1_1);
}
1.1.3json的两种常用方法
json的存在有两种形式,
一种是对象的形式存在,我们称之为json对象
一种是字符串的形式存在,我们叫他json字符串
一般我们要操作json中的数据的时候,需要json对象的格式
一般我们要在客户端和服务器之间进行数据交换的时候,使用json字符串
JSON.stringify() 把json对象转换成为json字符串
JSON.parse() 把json字符串转换为json对象
alert(jsonobj);
//把json对象转换成为json字符串
var jsonObjString = JSON.stringify(jsonobj); //特别想java中object的toString
alert(jsonObjString);
//把json字符串转换为json对象
var JSONObj2 = JSON.parse(jsonObjString);
alert(JSONObj2.key1);
1.2JSON在java中的使用
1.2.1 javabean和json的互转
public class JSONtest {
//1.javabean和json的互转
@Test
public void test1(){
Person person = new Person(1,"zhaochen");
//创建gson对象实例
Gson gson = new Gson();
// toJson方法可以把java对象转换为json字符串
String jsonString = gson.toJson(person);
System.out.println(jsonString);//{"ID":1,"name":"zhaochen"}
//fromjson把json字符串转换为java对象
// 第一个参数是json字符串
// 第二个参数是转换回去的java对象类型
Person person1 = gson.fromJson(jsonString, Person.class); //Person{ID=1, name='zhaochen'}
System.out.println(person1);
}
1.2.2 list和json的互换
需要一个工具类来确定list的类型
personListType.java
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>> {
}
// 2.List 和 json的互换
@Test
public void test2(){
ArrayList<Person> personList = new ArrayList<>();
personList.add(new Person(1,"zhaochen1"));
personList.add(new Person(2,"zhaochen2"));
Gson gson = new Gson();
//把list集合转换为json字符串
String jsonString = gson.toJson(personList);
System.out.println(jsonString);
List<Person> list=gson.fromJson(jsonString,new personListType().getType());
System.out.println(list);
Person person = list.get(0);
System.out.println(person);
}
1.2.3 map和json的互换
@Test
public void test(){
HashMap<Integer, Person> personHashMap = new HashMap<>();
personHashMap.put(1,new Person(1,"zhaochen1"));
personHashMap.put(2,new Person(2,"zhaochen2"));
Gson gson = new Gson();
//把map集合转换称为Json字符串
String toJson = gson.toJson(personHashMap);
System.out.println(toJson);
HashMap<Integer,Person> fromJson = gson.fromJson(toJson, new TypeToken<HashMap<Integer,Person>>(){}.getType());
System.out.println(fromJson);
Person person = fromJson.get(1);
System.out.println(person);
}
}