2021-05-13

 

 

                                                                      JSON解析

一、解析前先简单介绍一下JSON

1、json的格式:

    1.对象格式:用一对大括号扩住,一对大括号就代表一个JSON对象例:

{

      "name" : "张三",

       "age" : 18

}

  2.数组格式:用中括号扩住,一对中括号就是一个数组。例:

[元素1,元素2,元素3,.....]

  3.JSON对象和数组是可以相互嵌套的。例:

{

{
    "name" : "张三",
    "age" : 18,
    "people" : ["张三","李四",{
        "name" : "王五",
        "age" : 20

    },2],
    "student" : {
        "name" : "王二",
        "age" : 19
    }

}

 

二、JSON解析的两个工具类

  1、Gson类,是Google提供的用于解析JSON的工具类。Gson的使用,首先需要去官方下载Gson的jar包下载地址:https://github.com/google/gson/在把下载好的jar·包导入Java项目里。

导入jar包具体步骤如图所示:

1.先创建一个lib文件夹

2.把下载好的Gson.jar复制到lib文件夹下

3.导入jar包

4.先点Apply,再点OK。

 5.jar包导入成功如图所示,可以点开。

2、Gson的使用

先创建一个Gson对象,再用Gson对象调用Gson提供的两个方法,一、类转JSON串格式 toJson(类对象),二、JSON串转类fromJson(json串,类.class)

1.类转JSON代码如下:

public class JsonDemo {
    public static void main(String[] args) {
//创建Fruit类的对象
        Fruit fruit = new Fruit("苹果","红色");
                    //创建Gson对象并调用toJson方法把Fruit对象传入
        String s = new Gson().toJson(fruit);
        System.out.println(s);
    }
    static class Fruit{
       private String name;
       private String colour;

        public String getName() {
            return name;
        }

        @Override
        public String toString() {
            return "fruit{" +
                    "name='" + name + '\'' +
                    ", colour='" + colour + '\'' +
                    '}';
        }

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

        public String getColour() {
            return colour;
        }

        public void setColour(String colour) {
            this.colour = colour;
        }

        public Fruit() {
        }

        public Fruit(String name, String colour) {
            this.name = name;
            this.colour = colour;
        }
    }
}

结果如图:

2、JSON转类,代码如下:

public class JsonDemo1 {
    public static void main(String[] args) {
        //写一个JSON串
        String s = "{\"name\":\"苹果\",\"colour\":\"红色\"}";
               //创建Gson对象并调用fromJson方法把JSON串和要转换的类传进去,返回一个class类型
        Fruit fruit = new Gson().fromJson(s,Fruit.class);
        System.out.println(fruit.getName());
    }
    static class Fruit{
       private String name;
       private String colour;

        public String getName() {
            return name;
        }

        @Override
        public String toString() {
            return "fruit{" +
                    "name='" + name + '\'' +
                    ", colour='" + colour + '\'' +
                    '}';
        }

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

        public String getColour() {
            return colour;
        }

        public void setColour(String colour) {
            this.colour = colour;
        }

        public Fruit() {
        }

        public Fruit(String name, String colour) {
            this.name = name;
            this.colour = colour;
        }
    }
}

运行结果如下:

以上就是Gson常用的两个方法,还有其他方法感兴趣的可以自己试试,下面我们在说一下JSON解析的另一个工具类

2、FastJson类,这个是由阿里提供的JSON解析工具类。

1.首先需要下载一个fastJSON的jar包 下载地址:https://github.com/alibaba/fastjson

2.然后导jar包和上面Gson的导入方法一样。

3.这个类也是提供了一个类转JSON的方法toJSONString(类)方法和parseObject(json串,类.class)方法

fastjson和gson的区别是fastJSON提供的是静态方法直接用类名(JSON)调方法就行不用创建对象

例子:类转JSON代码如下:

public class JsonDemo2 {
    public static void main(String[] args) {
        Fruit fruit = new Fruit("苹果","红色");
                //直接类名JSON调用方法
        String s = JSON.toJSONString(fruit);
        System.out.println(s);
    }
    static class Fruit{
       private String name;
       private String colour;

        public String getName() {
            return name;
        }

        @Override
        public String toString() {
            return "fruit{" +
                    "name='" + name + '\'' +
                    ", colour='" + colour + '\'' +
                    '}';
        }

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

        public String getColour() {
            return colour;
        }

        public void setColour(String colour) {
            this.colour = colour;
        }

        public Fruit() {
        }

        public Fruit(String name, String colour) {
            this.name = name;
            this.colour = colour;
        }
    }
}

运行结果如图

2.JSON串转类代码如下:

public class JsonDemo3 {
    public static void main(String[] args) {
       String s = "{\"colour\":\"红色\",\"name\":\"苹果\",\"shuliang\":[1,2,3,4]}";
        Fruit fruit = JSON.parseObject(s, Fruit.class);
        //获取类里的数组
        String[] shuliang = fruit.getShuliang();
        //遍历数组
        for (String s1:shuliang) {
            System.out.println(s1);
        }

    }
    static class Fruit{
       private String name;
       private String colour;
       private String[] shuliang;

        public String[] getShuliang() {
            return shuliang;
        }

        public void setShuliang(String[] shuliang) {
            this.shuliang = shuliang;
        }

        public String getName() {
            return name;
        }

        @Override
        public String toString() {
            return "fruit{" +
                    "name='" + name + '\'' +
                    ", colour='" + colour + '\'' +
                    '}';
        }

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

        public String getColour() {
            return colour;
        }

        public void setColour(String colour) {
            this.colour = colour;
        }

        public Fruit() {
        }

        public Fruit(String name, String colour) {
            this.name = name;
            this.colour = colour;
        }
    }
}

运行结果如图:

以上就是JSON的两种解析方式Gson和FastJson。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值