1.JSON介绍
1.1什么是JSON
JSON是一种轻量级的数据交换格式。
采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。
1.2JSON语法
[] 表示数组
{} 表示对象
"" 表示是属性名或字符串类型的值
: 表示属性和值之间的间隔符 键值对
, 表示多个属性的间隔符或者是多个元素的间隔符 比如 id 属性 name
<script>
var user = { //写一个js对象
name : "松崎乡",
age : "20" ,
sex : "男"
}
//这是一个对象,注意键名也是可以使用引号包裹的
console.log(user) ;//{name: '松崎乡', age: '20', sex: '男'}
//--------------------------------
//开发中使用的json数据
//data中有三个对象
var objs = {"code":1,"message":"这是信息","data":[
{"id":1,"username":"荣耀","password":"22222"},
{"id":2,"username":"无畏","password":"9966"},
{"id":3,"username":"吹风","password":"888666"}]};
//控制台输出objs中的message
console.log(objs.message)
//控制台输出objs中data中下标为零的对象名字
console.log(objs.data[0].username)
//获取data中数据,相当于是个集合,因为里面存有三个对象
var obj = objs.data
//遍历取出data中对象的信息
for (var i = 0; i < obj.length; i++) {
console.log(obj[i].id)
console.log(obj[i].username)
console.log(obj[i].password)
}
</script>
2.JSON解析
解析也就是json字符串转json对象,json对象转json字符串
2.1FastJSON解析
- Fastjson是一个Java库,可以将Java对象转换为JSON格式,当然它也可以将JSON字符串转换为Java对象。
- 提供了toJSONString() 和 parseObject() 方法来将Java对象与JSON字符串相互转换:
1)调用toJSONString方法即可将对象转换成JSON字符串
2) parseObject 方法则反过来将JSON字符串转换成对象。
public class Demo1 {
public static void main(String[] args) {
//将json对象转为json字符串
//创建对象,并赋值
Student student = new Student(1, "张三", 35, "男", 189);
//使用第三方的jar包 将对象转为json字符串
//导包 使用json的核心类
String s = JSON.toJSONString(student); //{"age":35,"height":189,"id":1,"name":"张三","sex":"男"}
System.out.println(s);
//将json字符串转为对象
String s1 = "{\"age\":23,\"height\":169,\"id\":2,\"name\":\"李四\",\"sex\":\"女\"}";
//json字符串中的键一定要和实体类中的属性要对应,否则这个属性赋不上值
//将s1里面的数据通过反射获取student类对象,然后进行赋值
Student student1 = JSON.parseObject(s1, Student.class);
System.out.println(student1);
//将集合转换成json字符串
ArrayList<Student> students = new ArrayList<>();
students.add(new Student(1, "麻子", 20, "男", 170));
students.add(new Student(2, "小明", 22, "男", 180));
students.add(new Student(3, "小丽", 21, "女", 166));
//集合是中括号
String s2 = JSON.toJSONString(students);
//[{"age":20,"height":170,"id":1,"name":"麻子","sex":"男"},
// {"age":22,"height":180,"id":2,"name":"小明","sex":"男"},
// {"age":21,"height":166,"id":3,"name":"小丽","sex":"女"}]
System.out.println(s2);
//5.将json字符串,转为集合对象
List<Student> students1 = JSON.parseArray(s2, Student.class);
System.out.println(students1);
}
}
2.2浏览器处理JSON字符串
后端处理完json数据以后依靠ajax发送给前端页面
前端页面要将json字符串转换为json对象
- JSON.stringify():将json字符串转为对象
- JSON.parse():将对象转为json字符串
方法:JSON.stringify()
var student = {
"name":"admin",
"age":18,
"sex":"男",
"height":170
};
// 将js 对象转化为 字符串json
var str = JSON.stringify(student);
console.log(str);
2.3浏览器转换为json对象
方法:JSON.parse()
<script>
//js中没办法处理json字符串。不能将json字符串赋值给标签
//js中可以将json对象赋值给标签
//通过ajax拿到的是json字符串,必须要在前端页面中转为json对象之后再赋值给标签
var str = "{\"age\":22,\"height\":170,\"id\":2,\"name\":\"张三\",\"sex\":\"男\"}";
//将json字符串转为json对象
var student = JSON.parse(str)
console.log(typeof student)
console.log(student.age)
console.log(student.name)
console.log(student.sex)
//将前端字符串转为json对象,数组里放的对象
var studentList = JSON.parse('[{"name":"李四","age":18,"sex":"女","height":170},{"name":"麻子","age":16,"sex":"女","height":166}]');
for (var i=0;i<studentList.length;i++){
// 此时获取数组内的数据,使用[]
console.log(studentList[i]);
}
</script>