楊老師課堂之零基礎學習JSON知識點
阿新 • • 發佈:2018-11-08
JSON
- json是什麼
- 它是js提供的一種資料交換格式!
json的語法
- {}:是物件!
- > 屬性值:
- > 屬性名必須使用雙引號括起來!單引不行!!!
- null
- 數值
- 字串
- 陣列
- Boolean值: true/false
Json應用
Json與XML的對比
- 可讀性:XML勝出
- 解析難度:JSON本身就是JS物件(主場作戰),所以簡單很多
- 流行度:XML已經流行好多年,但在AJAX領域,JSON更受歡迎。
json-lib
是什麼?
- 它可以把javabean轉換成json串
jar包
- fastjson-1.1.37.jar
- 連結:https://pan.baidu.com/s/1HS1HqJo6y43sWqrvw5OORA 密碼:1i9v
核心類
JSONObject –> Map
> toString();
> JSONObject map = JSONObject.fromObject(person):把物件轉換成JSONObject物件
JSONArray –> List
> toString()
> JSONArray jsonArray = JSONArray.fromObject(list):把list轉換成JSONArray物件
演示程式碼:
/** * 演示JSON-LIB小工具 */ public class Demo1 { /* * 當map來用 */ @Test public void fun1() { JSONObject map = new JSONObject(); map.put("name", "zhangSan"); map.put("age", 23); map.put("sex"
Fastjson是什麼
阿里巴巴公司開源的速度最快的Json和物件轉換工具
fastjson入口類是com.alibaba.fastjson.JSON,
主要API是JSON.toJSONString和parseObject,
使用fastjson要注意要轉換的類必須有預設的無參構造方法。
導包
- com.alibaba.fasthson.JSON
舉例
將物件型別轉換成為字串
User.java
public class User { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } 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 class UserTest { @Test public void fun() { User user = new User(); user.setId(2); user.setUsername("rose"); user.setPassword("123"); // 使用JSON的 toJSONString 方法 傳入物件 String jsonString = JSON.toJSONString(user); System.out.println(jsonString); } }
執行後結果:
{"id":2,"password":"123","username":"rose"}
將集合型別轉換成為字串
依舊使用上面的User實體類
測試類:
public class UserTest { @Test public void fun() { ArrayList<User> list = new ArrayList<User>(); // 第一個物件 User user = new User(); user.setId(2); user.setUsername("rose"); user.setPassword("123"); // 將第一個物件新增到集合中去 list.add(user); // 第二個物件 User user2 = new User(); user2.setId(12); user2.setUsername("jack"); user2.setPassword("1234"); // 將第二個物件新增到集合中去 list.add(user2); //list中此時有兩個元素 String jsonString = JSON.toJSONString(list); System.out.println(jsonString); } }
執行後結果:
[{"id":2,"password":"123","username":"rose"}, "id":12,"password":"1234","username":"jack"}]
- 將Json文字資料資訊轉換為JsonObject物件,然後利用鍵值對的方式獲取資訊
測試類:
public class UserTest { @Test public void fun() { // str是一個json的文字資料 ,“\”為 雙引號的轉移符號 String str = "{\"name\":\"rose\"}"; JSONObject jsonObject = JSON.parseObject(str); System.out.println(jsonObject.get("name")); } }
將Json文字資料轉換為JavaBean資料
注意:這裡的Json文字資訊中的鍵的名稱必須和JavaBean中的欄位名稱一樣
鍵中沒有的在這個JavaBean中就顯示為null
測試類
public class UserTest { @Test public void fun() { String str = "[ {\"username\":\"rose\",\"password\":\"321\"}", {\"username\":\"jerry\",\"password\":\"123\"}" ]; User user = JSON.parseObject(str, User.class); System.out.println(user.getUsername()+":"+user.getPassword()); } }
執行後的結果:
rose:321
- 將JSON文字轉換為JavaBean的集合;
測試類
public class UserTest { @Test public void fun() { String str = "[{\"username\":\"rose\",\"password\":\"321\"}," + "{\"username\":\"jerry\",\"password\":\"123\"}]"; List<User> list = JSON.parseArray(str, User.class); for (User u : list) { System.out.println(u.getUsername()+":"+u.getPassword()); } }
執行後的結果:
rose:321 jerry:123
- 將日期物件轉換為字串
測試類
public class UserTest { @Test public void fun() { Date date = new Date(); System.out.println("date=" + date); String jsonString = JSON.toJSONString(date); System.out.println("--------------"); String dateFormat = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd: hh:mm:ss"); System.out.println("dateFormat:"+dateFormat); }
執行後的結果:
date=Wed Aug 22 19:08:06 CST 2018 <hr /> dateFormat:"2018-08-22: 07:08:06"
使用Maven進行搭建依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.37</version>
</dependency>