JSON的两种解析方式

JSON的两种解析方式,第1张

JSON的两种解析方式:Gson和Fastjson,下面来看下这两种解析方法怎样使用,并且他们有哪些区别。

1.Gson:

Gson是谷歌的一款JSON解析工具。

功能①:将对象转化为JSON字符串

         步骤:首先引入JAR包 

                1。在当前项目下新创建“lib”目录 

               2。然后将下载好的Gson包复制到此目录

                 3。将添加进来的包配置好。 

         然后就可以在需要转换JSON字符串的位置编写代码:

String json = new Gson().toJson(/*要转换的对象*/)

 功能②:将JSON字符串转换为对象

        在添加完JAR包后,我们只需要在要转换的位置编写:

对象 = new Gson().formJson(Json字符串,对象类型.class)

     注意:1.我们用来获得的对象和formJson方法第二个参数的类型是相同的。

                2.在转化的过程中,若是用来获得的对象中包含Json字符串中的属性就可以转出,若是不包含的属性就会丢失。

               3.若是在转换的过程中没有一个类型可以与之相对,我们可以将其转化为一个MAP集合。

                4.若是Json中有一个属性是数组,则转换后是一个ArrayList集合。

 示例1——将对象转化为Json字符串:

Book类:

public class Book {
    private int id;
    private String name;
    private String info;
    public Book() {
    }

    public Book(int id, String name, String info) {
        this.id = id;
        this.name = name;
        this.info = 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;
    }
}
public class Demo1 {
    public static void main(String[] args) {
        Book b1 = new Book(1001,"金苹果","种植苹果很辛苦");
        Gson g = new Gson();
        String text = g.toJson(b1);
        System.out.println(text);
    }
}

                 运行结果: 

示例2——将JSON字符串转换为对象:

public class Demo2 {
    public static void main(String[] args) {
        Gson g = new Gson();
        //转化:{"id":1001,"name":"金苹果","info":"种植苹果很辛苦","page":["锄禾日当午","汗滴禾下土","嘿嘿额嘿嘿额hi"]}
        Book b = g.fromJson("{\"id\":1001,\"name\":\"金苹果\",\"info\":\"种植苹果很辛苦\"}",Book.class);
        System.out.println(b.getId()+2);
        HashMap data =g.fromJson("{\"id\":1001,\"name\":\"金苹果\",\"info\":\"种植苹果很辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"嘿嘿额嘿嘿额hi\"]}", HashMap.class);
        System.out.println(data.get("page").getClass());

    }
}

        运行结果: 

2. Fastjson

        Fastjson是阿里的一款JSON解析工具。

        功能与Gson相同,也分为将对象转为JSON字符串和将JSON字符串两种,我们来说一下两种功能如何实现。

      功能①:将对象转化为JSON字符串

                步骤1.引入Fastjson的JAR包。

                步骤2.在需要转化为JSON字符串的位置编写入下代码:

String json = JSON.toJSONString(要转化的对象)

        功能②:将JSON字符串转化为对象

                  步骤1:引入JAR包。

                  步骤2:在需要转化的位置编写入下代码:

       

类型 对象名 = JSON.parseObject(JSON字符串,类型.class)
或
List<类型> list = JSON.parseArray(JSON字符串,类型.class)

                注意:第二行在JSON字符串是数组的时候才使用,如果字符串中没有数组则会出现异常 JSONException。

示例:

//个人理解:转换的原理,JSON是字符串型的,在转成json文件就是字符串,
//        提出来时,根据接收对象的类型来判断每个属性是什么类型,然后在将字符串转换成正确的类型
public class demo5 {
    public static void main(String[] args) {
        Book b = new Book(1001,"唐诗三百首","床前明月光,地上鞋一堆。床上大队长,高喊两块一双");
        String s = JSON.toJSONString(b);
        System.out.println(s);

    }
}

     运行结果:

 示例二:

public class Demo6 {
    public static void main(String[] args) {
        //1.转化:"{\"id\":1001,\"info\":\"床前明月光,地上鞋一堆。床上大队长,高喊两块一双\",\"name\":\"唐诗三百首\"}"
        Book b =JSON.parseObject("{\"id\":1001,\"info\":\"床前明月光,地上鞋一堆。床上大队长,高喊两块一双\",\"name\":\"唐诗三百首\"}",Book.class);
        System.out.println(b.getId()+3);
        List list = JSON.parseArray("[{\"id\":1001,\"info\":\"床前明月光,地上鞋一堆。床上大队长,高喊两块一双\",\"name\":\"唐诗三百首\"}]",Book.class);
        System.out.println(list.get(0).toString());
        //2.转化:["一二三","二三四","三四五"]
        List list1 = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]",String.class);
        System.out.println(list1.get(2));

    }
}

 运行结果:

 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/720087.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-25
下一篇2022-04-25

发表评论

登录后才能评论

评论列表(0条)

    保存