JSON解析

简介

        JSON:        JavaScript Object Notation  JS对象简谱 ,是一种轻量级的数据交换格式

对象格式

一本书
书名
简介   

java
        class Book{
            private String name;
            private String info;
            
            get/set...方法
        }
        Book b = new Book();
        b.setName("金苹果");
        b.setInfo("种苹果");
        ...

     js:
        var b = new Object();
        b.name = "金苹果";
        b.info = "种苹果";
    
    XML:
        <book>
            <name>金苹果</name>
            <info>种苹果</name>
        </book>
        
    JSON:
        {
            "name":"金苹果";
            "info":"种苹果";
        }     
   一个对象, 由一个大括号表示. 
        括号中 描述对象的属性 . 通过键值对来描述对象的属性 
        (可以理解为, 大括号中, 包含的是一个个的键值对.) 
        格式:
            键与值之间使用冒号连接, 多个键值对之间使用逗号分隔. 
            键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.) 
            键值对的值, 可以是JS中的任意类型的数据

数据格式

在JSON格式中可以与对象互相嵌套
[元素1, 元素2...]

我在用的JSON数据转换网站

https://www.sojson.com/json/json_online.html

JAVA与JSON

        将JAVA中的对象转换成JSON格式的字符串

        将JSON格式的字符串转换成JAVA的对象

Gson

  • 将JAVA的对象转换成JSON格式的字符串

步骤:

        1.        引入JAR包

        2.        在需要转换JSON字符串的位置编写如下代码即可:

                String json = new Gson().toJSON(要转换的对象)

案例:

public class Demo1 {
    public static void main(String[] args) {
        // 1.   创建Gson对象
        Gson gson = new Gson();
        // 2.   创建java对象
        Book book = new Book(1, "葵花宝典", "必先自宫");
        // 3.   转换book对象
        String json = gson.toJson(book);
        // 4.   展示转换成的json格式的字符串
        System.out.println(json);
    }

     static class Book {
        private int id;
        private String name;
        private String info;

        public Book(int id, String name, String info) {
            this.id = id;
            this.name = name;
            this.info = info;
        }

        public Book() {
        }

        @Override
        public String toString() {
            return "Book{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", info='" + info + '\'' +
                    '}';
        }

         @Override
         public boolean equals(Object o) {
             if (this == o) return true;
             if (o == null || getClass() != o.getClass()) return false;
             Book book = (Book) o;
             return id == book.id && Objects.equals(name, book.name) && Objects.equals(info, book.info);
         }

         @Override
         public int hashCode() {
             return Objects.hash(id, name, info);
         }

         public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getInfo() {
            return info;
        }

        public void setInfo(String info) {
            this.info = info;
        }
    }

}
  • 将JSON格式的字符串转换成为JAVA的对象

步骤:

        1.        引入JAR包

        2.        在需要转换Java对象的位置编写如下代码:

                对象 = new Gson().fromJson(JSON字符串, 对象类型.class);

案例:

String json = ""{\"id\":1,\"name\":\"葵花宝典\",\"info\":\"必要自宫\"}";
// 1.    创建Gson对象
Gson gson = new Gson();
// 2.    转换json格式的字符串
Book book = gson.fromJson(json, Book.class);
// 3.    展示 
System.out.println(book);

注意:在进行转换时,如果字符串中有数组的部分,将自动转换成ArrayList集合。

如下:

public static void main(String[] args) {
        // 1.   创建Gson对象
        Gson g = new Gson();
        // 2.   转换 :{"id":"1","name":"葵花宝典","info":"必先自宫","content":["12345","上山打老虎"]}
        HashMap data = g.fromJson("{\"id\":\"1\",\"name\":\"葵花宝典\",\"info\":\"必先自宫\",\"content\":[\"12345\",\"上山打老虎\"]}", HashMap.class);
        // 3.   输出结果
        System.out.println(data.get("content"));
        System.out.println(data.get("content").getClass());
    }

结果:

[12345, 上山打老虎]
class java.util.ArrayList

FastJson

  • 将JAVA对象转换成为JSON格式字符串

步骤:

        1.        导入JAR包

        2.        在需要转换成JSON字符串的位置编写如下代码:
                String json = JSON.toJSONString(要转换的对象);

案例:

public static void main(String[] args) {
        Book book = new Book("100010", "葵花宝典", "欲练此功,必先自宫");
        // 1.   转换
        String json = JSON.toJSONString(book);
        System.out.println(json);
    }

结果:

{"id":"100010","info":"欲练此功,必先自宫","name":"葵花宝典"}
  • 将JSON格式字符串转换成为JAVA对象

步骤:

        1.        导入JAR包

        2.        在需要转换成JAVA对象的位置编写如下代码:

                类型 对象名=JSON.parseObject(JSON字符串, 类型.class);

                        或

                List<类型> list=JSON.parseArray(JSON字符串,类型.class);

案例1:

public static void main(String[] args) {
        String json = "{\"id\":\"100010\",\"info\":\"欲练此功,必先自宫\",\"name\":\"葵花宝典\"}";
        // 1.   转换
        Book book = JSON.parseObject(json, Book.class);
        System.out.println(book);
    }

案例2:

public static void main(String[] args) {
        // 转换 : ["一二三四五","上山打老虎"]
        List<String> strings = JSON.parseArray("[\"一二三四五\",\"上山打老虎\"]", String.class);
        for (String str : strings) {
            System.out.println(str);
        }
    }

ps:更建议使用Gson

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值