熱線電話:0755-23712116
郵箱:contact@shuangyi-tech.com
地(dì / de)址:深圳市寶安區沙井街道(dào)後亭茅洲山工業園工業大(dà)廈全至科技創新園科創大(dà)廈2層2A
JSON全名稱是(shì)JavaScript Object Notation,即JavaScript對象表示法。
Java的(de)對象表示:
Person p = new Person();
p.setName("張三");
p.setAge(23);
p.setGender("男");
JavaScript的(de)對象表示:
var p = {"name":"張三","age":23,"gender":"男"};
JSON介紹:
JSON語法基本規則
1、數據在(zài)鍵/值對中:JSON數據由鍵值對構成。
# 值是(shì)數字類型
{age: 10, score: 78.5}
# 值是(shì)字符串類型
{name: "張三", sex: "m"}
# 值是(shì)布爾值類型
{flag: true}
# 值是(shì)數組類型
{names: ["zhangsan", "lisi", "wangwu"]}
{students: [{name: "zhangsan"}, {name: "lisi"}]}
# 值是(shì)對象類型
{student: {name: "zhangsan", age: 18, flag: true}}
# 值是(shì)null類型
{value: null}
2、數據由逗号分隔:多個(gè)鍵值對用逗号進行分隔
{key1: value1, key2: value2, key3: value3, ...}
3、花括号保存對象:使用{}定義json格式的(de)對象,又可以(yǐ)嵌套其他(tā)數據類型的(de)值。
{student: {name: "zhangsan", hobbies: ["play", "read", "listen"]}}
4、方括号保存數組:[1,2,3,4,5],又可以(yǐ)嵌套其他(tā)數據類型的(de)值。
[{name1:"zhangsan"},{name2:"lisi"}]
[1,2,3,4,5,6]
讀取JSON數據
讀取通常是(shì)指在(zài)前端使用JavaScript讀取JSON格式數據,後端Java不(bù)采用此語法:
# 讀取對象類型中指定鍵的(de)值
json對象.鍵名
json對象["鍵名"]
# 讀取JSON數組中的(de)值
數組對象[索引]
# 遍曆對象
for (鍵名 in 對象) {
# key爲(wéi / wèi)鍵名;對象[key]爲(wéi / wèi)鍵值
}
# 遍曆數組
for (var i=0; i<數組.length; i++) {
# 數組[i]獲取數組的(de)值
}
實例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>json遍曆</title>
</head>
<body>
<script>
// 遍曆對象
// 鍵名可以(yǐ)不(bù)加引号,也(yě)可以(yǐ)加單引号或雙引号
var person1 = {name: "張三", age: 23, sex: "m"};
var person2 = {"name": "張三", "age": 23, "sex": "m"};
var person3 = {'name': "張三", 'age': 23, 'sex': "m"};
// 獲取person對象中所有的(de)鍵和(hé / huò)值
// for in 循環
for (key in person1) {
// 無法使用person1.key,因爲(wéi / wèi)這(zhè)樣相當于(yú)person1."name"
console.log(key, person1[key]);
}
// 遍曆普通數組
var arr=["唐僧","孫悟空","豬八戒","沙僧"];
for (var i=0; i < arr.length; i++)
{
console.log(arr[i]);
}
// 遍曆對象數組
var ps = [{"name": "張三", "age": 23, "gender": true},
{"name": "李四", "age": 24, "gender": true},
{"name": "王五", "age": 25, "gender": false}];
for (var i = 0; i < ps.length; i++) {
var p = ps[i];
for (key in p) {
console.log(key + ":" + p[key]);
}
}
</script>
</body>
</html>
概述
要(yào / yāo)想實現JSON數據與Java數據的(de)相互轉換,需要(yào / yāo)JSON解析器,即能夠解析JSON格式數據的(de)jar包。
常見的(de)解析器:Jsonlib,Gson,fastjson,jackson。
本節中使用jackson,因爲(wéi / wèi)spring内置它,爲(wéi / wèi)以(yǐ)後打下基礎。
JSON轉爲(wéi / wèi)Java對象
将JSON轉換爲(wéi / wèi)Java對象的(de)步驟如下:
1. 導入jackson的(de)相關jar包
2. 創建Jackson核心對象 ObjectMapper
3. 調用ObjectMapper的(de)相關方法進行轉換:readValue(json字符串數據, Class)
第一(yī / yì /yí)步:導入相關jar包(注意,版本一(yī / yì /yí)定要(yào / yāo)匹配,三個(gè)版本應該一(yī / yì /yí)緻,否則可能發生異常)
第二步:轉換對象
public class Json2Java {
public static void main(String[] args) throws IOException {
ObjectMapper mapper=new ObjectMapper();
String json="{\"username\":\"李四\",\"password\":\"123456\"}";
User user = mapper.readValue(json, User.class);
System.out.println(user);
}
}
class User{
private String username;
private String password;
public User() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}