一、什么是JSON
Json的全称是:JavaScript Object Notation。JS对象简谱,是一种轻量级的数据交换格式。
Json最初时候也是以存储对象而生的,以存储对象为主
Json现在基本上也是用于存储对象和交换数据,进行数据之间互相的传输JavaScript对象表示法:
java对象:
Student student = new Student();
student.setName("张三");
student.setAge(20);
student.setSex("男");输出结果为:
Student{name='张三', age=20, sex='男'}
json:
var student = {"name":"张三", "age":20, "sex":"男"};
二、JSON语法
1.基本规则
1.json的数据都是由键和值构成的,多个键值之间要用逗号分割
键要使用引号引起来,单双引号都可以,也可以不用引号(尽量统一)
值是根据数据类型来定:
数字(整数或浮点数)不用使用引号
字符串(使用双引号括起来)
逻辑值(true或者false)不用使用引号
数组(在方括号中){"student":[{属性1},{属性2},{属性3}]}
对象(在花括号中){"address":{"sheng":"河南省","江苏省"}}
null 不常用
总结:花括号是保存json对象的,方括号是保存json数组的
2.使用{}定义json格式的
2.获取数据
1.json对象.键名
2.json对象["键名"]
3.数组对象[索引]
三、Json数据跟Java对象互相转换
1.创建Student实体类。
2.加入jackson相关的依赖:
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-datatype-json-org</artifactId>
<version>1.8.0</version>
</dependency>3.
(1).Java对象转为Json
1.创建Java对象
2.创建Jackson的核心对象(ObjectMapper)
3.调用ObjectMapper的相关方法进行转换,writeValueAsString()
(2).Json转为Java对象
1.初始化Json字符串
2.创建Jackson的核心对象(ObjectMapper)
3.调用ObjectMapper的相关方法进行转换,readValue()
json语法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
/*1.基本格式*/
var student={"name":"张三","age":20,"sex":true};
alert(student)
var name=student.name;
alert(name)
/*2.嵌套格式{}-->[]*/
var student2={
"student2":[
{"name":"张三","age":20,"sex":true},
{"name":"李四","age":26,"sex":false},
{"name":"王五","age":28,"sex":true}
]
};
alert(student2)
var age=student2.student2[2].age;
alert(age);
//3.数组格式[]-->{}
var student3=[{"name":"张三","age":20,"sex":true},
{"name":"李四","age":26,"sex":false},
{"name":"王五","age":28,"sex":true}
];
alert(student3)
var sex=student3[1].sex;
alert(sex)
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
/*1.基本格式*/
var student={"name":"张三","age":20,"sex":true};
//使用for in循环获取student对象中的键和值
for(var key in student)
{
alert(key+":"+student[key])
}
//3.数组格式[]-->{}
var student3=[{"name":"张三","age":20,"sex":true},
{"name":"李四","age":26,"sex":false},
{"name":"王五","age":28,"sex":true}
];
//获取student3中所有的键和值
//使用for获取数组的长度,数组中每个对象
for (let i = 0; i < student3.length; i++) {
var student3Element=student3[i];
alert(student3Element)
//使用for in循环获取student3对象(student3Element)中每个对象所有的键和值
for(var key in student3Element)
{
alert(key+":"+student3Element[key])
}
}
</script>
</body>
</html>
Json数据跟Java对象互相转换 :(写在service层)
package com.hsd.entity;
public class Student {
private String name;
private int age;
private String sex;
public Student() {
}
public Student(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
Java对象转为Json:
package com.hsd.service;
import com.hsd.entity.Student;
import org.codehaus.jackson.map.ObjectMapper;
import java.io.File;
import java.io.IOException;
public class Test01 {
public static void main(String[] args) throws IOException {
//将java对象转换为json字符串
//1.创建student对象
Student student=new Student();
student.setName("张三");
student.setAge(20);
student.setSex("男");
System.out.println(student);
System.out.println("--------------------------------------");
//2.创建jackson核心对象ObjectMapper
/*ObjectMapper常用的方法:
writeValueAsString:将对象转换为字符串
writeValue:将对象转换为字符串并写入到D:\\a.txt文件中
*/
ObjectMapper objectMapper = new ObjectMapper();
//3.调用ObjectMapper的相关方法进行转换
String string = objectMapper.writeValueAsString(student);
System.out.println(string);//{"name":"张三","sex":"男","age":20}
objectMapper.writeValue(new File("D:\\a.txt"),student);
}
}
结果:
Json转为Java对象
package com.hsd.service;
import com.hsd.entity.Student;
import org.codehaus.jackson.map.ObjectMapper;
import java.io.IOException;
public class Test02 {
public static void main(String[] args) throws IOException {
//json字符串转换为java字符串
//1.初始化json字符串
String string="{\"name\":\"张三\",\"age\":20,\"sex\":\"男\"}";
System.out.println(string);
System.out.println("------------------------------------");
//2.创建ObjectMapper对象
ObjectMapper objectMapper = new ObjectMapper();
//3.转换
Student student = objectMapper.readValue(string, Student.class);
System.out.println(student);
}
}
结果: