杨老师课堂之零基础学习JSON知识点

  1. 云栖社区>
  2. 博客>
  3. 正文

杨老师课堂之零基础学习JSON知识点

杨校 2018-08-22 19:20:10 浏览853
展开阅读全文
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/81949523

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>

网友评论

登录后评论
0/500
评论
杨校
+ 关注