JSON
JSON
概念
JavaScript Object Notation JavaScript 对象表示法 Person p = new Person(); p.setName("张三"); p.setAge(23); p.setGender("男");
var p = {"name":"张三","age":23,"gender":"男"};
- json 现在多用于存储和交换文本信息的语法
- 进行数据的传输
- JSON 比 XML 更小、更快,更易解析。
语法
- 基本规则
数据在名称/值对中:json 数据是由键值对构成的
键用引号(单双都行)引起来,也可以不使用引号
值得取值类型:
1. 数字(整数或浮点数) 2. 字符串(在双引号中) 3. 逻辑值(true 或 false) 4. 数组(在方括号中) {"persons":[{},{}]} 5. 对象(在花括号中) {"address":{"province":"陕西"....}} 6. null
1
2
3
4
5
6
数据由逗号分隔:多个键值对由逗号分隔
花括号保存对象:使用{}定义 json 格式
方括号保存数组:[]
- 获取数据:
1. json对象.键名
2. json对象["键名"]
3. 数组对象[索引]
4. 遍历
//1.定义基本格式
var person = {"name": "张三", age: 23, 'gender': true};
var ps = [{"name": "张三", "age": 23, "gender": true},
{"name": "李四", "age": 24, "gender": true},
{"name": "王五", "age": 25, "gender": false}];
//获取person对象中所有的键和值
//for in 循环
/* for(var key in person){
//这样的方式获取不行。因为相当于 person."name"
//alert(key + ":" + person.key);
alert(key+":"+person[key]);
}*/
//获取ps中的所有值
for (var i = 0; i < ps.length; i++) {
var p = ps[i];
for(var key in p){
alert(key+":"+p[key]);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
JSON 对象和字符串对象的互转
JSON.stringify( json ); 此方法可以把一个 json 对象转换成为 json 字符串
JSON.parse( jsonString ); 此方法可以把一个 json 字符串转换成为 json 对象
JSON 数据和 Java 对象的相互转换
JSON 解析器:常见的解析器:Jsonlib,Gson,fastjson,jackson
JSON 转为 Java 对象
导入 jackson 的相关 jar 包
创建 Jackson 核心对象 ObjectMapper
调用 ObjectMapper 的相关方法进行转换
package com.atguigu.gson; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; public class GsonTest { static class Person { private int age; private String name; public Person() { // Auto-generated constructor stub } public Person(int age, String name) { this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person [age=" + age + ", name=" + name + "]"; } } // 要把复杂的json 字符串转换成为java 对象。需要继承TypeToken 类。 // 并把返回的类型当成TypeToken 的泛型注入 static class PersonType extends TypeToken<List<Person>> { } public static void main(String[] args) { // json 操作,一定要先new 一个gson 对象。 Gson gson = new Gson(); // java 对象--json Person person = new Person(12, "wzg168"); // 把对象转成为json 字符串 String personjson = gson.toJson(person); System.out.println(personjson); // 把json 字符串转换成为java 对象 Person p = gson.fromJson(personjson, Person.class); System.out.println(p); System.out.println("------------------------------------------"); // 2、java 对象list 集合和json 的转换 List<Person> list = new ArrayList<Person>(); for (int i = 0; i < 3; i++) { list.add(new Person(10 * i, "name-" + i)); } String jsonListString = gson.toJson(list); System.out.println(jsonListString); // 把json 数组转换成为List 对象 // List<Person> ps = gson.fromJson(jsonListString, new PersonType().getType()); // 我们也可以使用匿名内部类 List<Person> ps = gson.fromJson(jsonListString, new TypeToken<List<Person>>() { }.getType()); System.out.println(ps); System.out.println("------------------------------------------"); // 3、map 对象和json 的转换 Map<String, Person> mapPerson = new HashMap<String, GsonTest.Person>(); // 添加person 到map 中 mapPerson.put("p1", new Person(1, "person-1")); mapPerson.put("p2", new Person(2, "person-2")); // 把map 转换成为json 对象 String jsonMapString = gson.toJson(mapPerson); System.out.println(jsonMapString); // 通过使用匿名内部类的方式 Map<String, Person> map = gson.fromJson(jsonMapString, new TypeToken<HashMap<String, Person>>() {}.getType()); System.out.println(map); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
readValue(json 字符串数据,Class)
Java 对象转换 JSON
使用步骤:
导入 jackson 的相关 jar 包
创建 Jackson 核心对象 ObjectMapper
调用 ObjectMapper 的相关方法进行转换
转换方法:
- writeValue(参数 1,obj):
参数 1:
File:将 obj 对象转换为 JSON 字符串,并保存到指定的文件中
Writer:将 obj 对象转换为 JSON 字符串,并将 json 数据填充到字符输出流中
OutputStream:将 obj 对象转换为 JSON 字符串,并将 json 数据填充到字节输出流中
- writeValueAsString(obj):将对象转为 json 字符串
- writeValue(参数 1,obj):
参数 1:
File:将 obj 对象转换为 JSON 字符串,并保存到指定的文件中
Writer:将 obj 对象转换为 JSON 字符串,并将 json 数据填充到字符输出流中
OutputStream:将 obj 对象转换为 JSON 字符串,并将 json 数据填充到字节输出流中
注解:
- @JsonIgnore:排除属性。
- @JsonFormat:属性值得格式化
- @JsonFormat(pattern = "yyyy-MM-dd")
复杂 java 对象转换
- List:数组
- Map:对象格式一致
上次更新: 2025/02/26, 08:57:57