Gson快速上手(这一篇就够了!!)

目录

1、Gson简介

2、Json简介

3、Gson快速上手

3.0、导入依赖

3.1、创建Gson对象

3.1.1   new Gson()

3.1.2   GsonBuilder.build()

3.2、对象--->Json

3.3、Json--->对象

3.4、List集合转换

3.4、Map集合转换

 4、结语


1、Gson简介

        Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,其主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。

        Gson是目前功能最强的JSON解析器之一,并且不需要依赖额外的Jar包,能够直接运行在JAVA平台。相对于FastJson,更能准确的转换复杂的Bean。

        

2、Json简介

        一般来说如果你要使用Gson,那么你肯定对json有所了解,为了防止意外,让我们再来讲解一下这个编程世界的交流货币——JSON数据。

        JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有易读易写的特点,广泛应用于Web开发和数据传输领域。与 XML 相比,它不那么冗长且更具可读性,人类很容易读写,机器也很容易解析和生成。

        JSON起源于JavaScript语言,但已成为一种独立于编程语言的数据格式。它由键值对组成,类似于JavaScript中的对象,但更加简洁和通用化。JSON数据以文本形式存储,易于解析和生成,因此被广泛应用于数据交换和存储。

        JSON的数据由键值对组成,每个键值对之间用逗号分隔,{ }包裹表示一个对象,[ ]包裹表示一个数组,这是最基本的数据结构,了解这个基本上就差不多了。例如下面:

[
    {
        "name": "Mike",
        "age": 30,
        "city": "New York"
    },
    {
        "name": "Tom",
        "age": 18,
        "city": "Londom"
    }
]

 JSON的内容很简单,但作为一个编程世界里的货币,在数据传输过程中,如何对其进行转换是一个很普遍的问题。

3、Gson快速上手

3.0、导入依赖

目前最新版本是2.11.0,我们选择2.10.1版本,在pom文件中添加Maven的Gson依赖,我们前面提到过,Gson是不依赖其他Jar包的。

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.10.1</version>
        </dependency>

3.1、创建Gson对象

3.1.1   new Gson()
Gson gson = new Gson();
3.1.2   GsonBuilder.build()
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();

3.2、对象--->Json

People P1=new People("菠萝吹雪",15,"黑龙江");
People P2=new People("橙留香",16,"上海");
Gson gson=new GsonBuilder()
             .setPrettyPrinting()
             .create();
String P11=gson.toJson(P1);
String P21=gson.toJson(P2);
System.out.println(P11);
System.out.println(P21);

 注意:  .setPrettyPrinting() 方法是为了让 JSON格式输出的更美观,这也是Gson的一大优点。

控制台输出结果如下:

{
  "name": "菠萝吹雪",
  "age": 15,
  "city": "黑龙江"
}
{
  "name": "橙留香",
  "age": 16,
  "city": "上海"
}

3.3、Json--->对象

            String jsonP1="{\n" +
                    "  \"name\": \"菠萝吹雪\",\n" +
                    "  \"age\": 15,\n" +
                    "  \"city\": \"黑龙江\"\n" +
                    "}";
            String jsonP2="{\n" +
                    "  \"name\": \"橙留香\",\n" +
                    "  \"age\": 16,\n" +
                    "  \"city\": \"上海\"\n" +
                    "}";
            Gson gson=new Gson();
            People people1 = gson.fromJson(jsonP1, People.class);
            People people2 = gson.fromJson(jsonP2, People.class);
            System.out.println(people1);
            System.out.println(people2);

 控制台输入如下:

People(name=菠萝吹雪, age=15, city=黑龙江)
People(name=橙留香, age=16, city=上海)

此时这里从JSON字符串转换成了对应的People对象 

3.4、List集合转换

  List与Json之间的互相转换:

    void test03(){
        List<People> peopleList=new ArrayList<>();
        peopleList.add(new People("菠萝吹雪",15,"黑龙江"));
        peopleList.add(new People("橙留香",16,"上海"));
        Gson gson=new GsonBuilder()
                .setPrettyPrinting()
                .create();
        //将List转化为Json对象
        String listjson = gson.toJson(peopleList);
        System.out.println(listjson);
        //将Json对象转化为List对象
        List<People> PeopleList = gson.fromJson(listjson, new TypeToken<List<People>>() {}.getType());
        System.out.println(PeopleList);
    }

 控制台输出如下:

[
  {
    "name": "菠萝吹雪",
    "age": 15,
    "city": "黑龙江"
  },
  {
    "name": "橙留香",
    "age": 16,
    "city": "上海"
  }
]


[People(name=菠萝吹雪, age=15, city=黑龙江), People(name=橙留香, age=16, city=上海)]

3.4、Map集合转换

转换Map的步骤和转换List的步骤一模一样,代码如下:

        Map<String,People>map=new HashMap<>();
        map.put("people1",new People("菠萝吹雪",15,"黑龙江"));
        map.put("people2",new People("橙留香",16,"上海"));
        Gson gson=new GsonBuilder()
                .setPrettyPrinting()
                .create();
        String mapJson = gson.toJson(map);
        System.out.println(mapJson);
        Map<String,People>jsonMap  = gson.fromJson(mapJson, new TypeToken<Map<String, People>>() {}.getType());
        System.out.println(jsonMap);

 控制台输出如下:

{
  "people1": {
    "name": "菠萝吹雪",
    "age": 15,
    "city": "黑龙江"
  },
  "people2": {
    "name": "橙留香",
    "age": 16,
    "city": "上海"
  }
}
{people1=People(name=菠萝吹雪, age=15, city=黑龙江), people2=People(name=橙留香, age=16, city=上海)}

 4、结语

OK这次到这里就结束了,想要了解更多可以访问官网https://github.com/google/gson

下次再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值