JSON
什么是JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,而且很多语言都提供了对JSON的支持(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这使得JSON成为理想的数据交换格式。
其中轻量级指的是跟xml作比较,数据交换指的是客户端和服务端之间业务数据的传递格式。
JSON在JavaScript中使用
json的定义(json就是一个对象)
//json的定义
var jsonObj = {
"key1": 12,
"key2": "abc",
"key3": true,
"key4": [15, "arr", false],
"key5": {
"key5_1": 500,
"key5_2": "object"
"key5_3": true
},
"key6": [
{
"key6_1_1": 400,
"key6_1_2": "abc",
},
{
"key6_2_1": false,
"key6_2_2": 30
}
]
};
json的访问
//json的访问
alert(jsonObj.key1); //12
alert(json.key4); //得到数组 [15,"arr",false]
for(var i=0; i<jsonObj.key4.length; i++) { //json数组的遍历
alert(jsonObj.key4[i];
}
alert(jsonObj.key5.key5_1); //500
alert(jsonObj.key6[0].key6_1_1); //400
json的有两种存在形式
- 对象形式的存在,即json对象
- 字符串形式的存在,即json字符串
当需要操作json中数据的时候,使用json对象
当需要在客户端和服务器之间进行数据交换的时候,使用json字符串
JSON.stringify() 把json对象转换成为json字符串
JSON.parse() 把json字符串转换成为json对象
JSON在Java中使用
引入依赖

JavaBean和JSON的互转
package com.tang.web.servlet.bean;
public class User {
private String username;
private String password;
private String gender;
private Integer age;
public User() {
}
public User(String username, String password, String gender, Integer age) {
this.username = username;
this.password = password;
this.gender = gender;
this.age = age;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
User user = new User("zhangsan","123456","男", 18);
Gson gson = new Gson();
String json = gson.toJson(user);
//toJson 方法可以把JavaBean对象转换为json字符串
System.out.println(json);
//fromJson 方法可以把json字符串转化为JavaBean对象
User myuser = gson.fromJson(json, User.class);
输出:{"username":"zhangsan","password":"123456","gender":"男","age":18}
List和JSON的互转
List<User> users = new ArrayList<>();
users.add(new User("张三", "123", "男", 25));
users.add(new User("李四", "456", "女", 30));
users.add(new User("王五", "789", "女", 16));
Gson gson = new Gson();
//把List<User>对象转换为json字符串
String json = gson.toJson(users);
System.out.println(json);
//把json字符串转化为List<User>对象
List<User> userList = gson.fromJson(json, new TypeToken<ArrayList<User>>(){}.getType());
System.out.println(userList);
Map和JSON的互转
Map<String, User> map = new HashMap<>();
map.put("zhangsan", new User("张三", "123", "男", 25));
map.put("lisi", new User("李四", "456", "女", 30));
map.put("wangwu", new User("王五", "789", "女", 16));
Gson gson = new Gson();
//把Map<String, User>对象转换为json字符串
String json = gson.toJson(map);
System.out.println(json);
//把json字符串转化为Map<String, User>对象
Map<String, User> userMap = gson.fromJson(json, new TypeToken<Map<String, User>>(){}.getType());
System.out.println(userMap);
浙公网安备 33010602011771号