1. 程式人生 > >楊老師課堂之零基礎學習JSON知識點

楊老師課堂之零基礎學習JSON知識點

JSON

  1. json是什麼
    • 它是js提供的一種資料交換格式!

json的語法

  • {}:是物件!
    • > 屬性值:
    • > 屬性名必須使用雙引號括起來!單引不行!!!
  • null
  • 數值
  • 字串
  • 陣列
  • Boolean值: true/false

Json應用

Json與XML的對比

  • 可讀性:XML勝出
  • 解析難度:JSON本身就是JS物件(主場作戰),所以簡單很多
  • 流行度:XML已經流行好多年,但在AJAX領域,JSON更受歡迎。

json-lib

  1. 是什麼?

    • 它可以把javabean轉換成json串
  2. jar包

  3. 核心類

    • 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"
    , "male"); String s = map.toString(); System.out.println(s); } /* * 當你已經有一個Person物件時,可以把Person轉換成JSONObject物件 */ @Test public void fun2() { Person p = new Person("liSi", 32, "female"); // 把物件轉換成JSONObject型別 JSONObject map = JSONObject.fromObject(p); System.out.println(map.toString()); } /** * JSONArray */ @Test public void fun3() { Person p1 = new Person("zhangSan", 23, "male"); Person p2 = new Person("liSi", 32, "female"); JSONArray list = new JSONArray(); list.add(p1); list.add(p2); System.out.println(list.toString()); } /** * 原來就有一個List,我們需要把List轉換成JSONArray */ @Test public void fun4() { Person p1 = new Person("zhangSan", 23, "male"); Person p2 = new Person("liSi", 32, "female"); List<Person> list = new ArrayList<Person>(); list.add(p1); list.add(p2); System.out.println(JSONArray.fromObject(list).toString()); } }
  4. Fastjson是什麼

    • 阿里巴巴公司開源的速度最快的Json和物件轉換工具

    • fastjson入口類是com.alibaba.fastjson.JSON,

      主要API是JSON.toJSONString和parseObject,

      使用fastjson要注意要轉換的類必須有預設的無參構造方法。

  5. 導包

    1. com.alibaba.fasthson.JSON
  6. 舉例

    1. 將物件型別轉換成為字串

      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"}
    2. 將集合型別轉換成為字串

      依舊使用上面的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"}]
      1. 將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"));
      }
      }
      1. 將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
      1. 將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
      1. 將日期物件轉換為字串

      測試類

      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>