Java中利用gson解析Json实例教程

下面我将为您详细讲解“Java中利用gson解析Json实例教程”的完整攻略。

Java中利用gson解析Json实例教程

什么是gson

Gson是Google公司发布的一套Java对象序列化和反序列化库。可以将JSON格式的字符串转换为Java对象,也可以将Java对象转换为JSON格式的字符串。

在Java中使用gson可以方便的进行Json解析,使用简单高效,实用性强。

基本用法

  1. 导入gson的jar包

在项目的pom.xml文件中加入以下依赖:

<!-- Gson -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>
  1. 使用gson解析json

下面是一个简单的JSON示例:

{
    "name": "John Smith",
    "age": 28,
    "email": "john.smith@gmail.com"
}

Java代码如下:

import com.google.gson.Gson;
import java.util.Map;

public class JsonParser {

    public static void main(String[] args) {

        String json = "{\"name\":\"John Smith\",\"age\":28,\"email\":\"john.smith@gmail.com\"}";

        Gson gson = new Gson();

        Map<String, Object> data = gson.fromJson(json, Map.class);

        String name = (String) data.get("name");
        int age = (int) data.get("age");
        String email = (String) data.get("email");

        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        System.out.println("Email: " + email);
    }
}

上述代码中,从String类型的json数据中解析出了Map类型的数据。可以通过Map.get()方法获取指定的属性值,从而完成解析。

示例

下面通过两个具体的示例来说明如何使用gson解析Json数据。

示例一

假设有如下的JSON数据:

{
  "id":100001,
  "name":"电视",
  "price":4999.0,
  "des":"4k高清,55寸屏幕"
}

Java代码如下:

import com.google.gson.Gson;

public class Product {

    private int id;
    private String name;
    private double price;
    private String des;

    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 double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getDes() {
        return des;
    }

    public void setDes(String des) {
        this.des = des;
    }

    @Override
    public String toString() {
        return "Product{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", des='" + des + '\'' +
                '}';
    }

    public static void main(String[] args) {
        String json = "{\"id\":100001,\"name\":\"电视\",\"price\":4999.0,\"des\":\"4k高清,55寸屏幕\"}";

        Gson gson = new Gson();

        Product product = gson.fromJson(json, Product.class);

        System.out.println(product);
    }
}

上述代码中,通过Product类与JSON数据进行映射,使用fromJson方法将JSON数据转换为Product对象,输出Product对象的toString方法的结果,即完成了JSON的解析。

示例二

假设有如下的JSON数据:

[
  {
    "id":100001,
    "name":"电视",
    "price":4999.0,
    "des":"4k高清,55寸屏幕"
  },
  {
    "id":100002,
    "name":"手机",
    "price":2499.0,
    "des":"骁龙855,8GB内存"
  },
  {
    "id":100003,
    "name":"电脑",
    "price":7999.0,
    "des":"i7处理器,16GB内存"
  }
]

Java代码如下:

import com.google.gson.Gson;
import java.util.ArrayList;

public class ProductList {

    private ArrayList<Product> products;

    public ArrayList<Product> getProducts() {
        return products;
    }

    public void setProducts(ArrayList<Product> products) {
        this.products = products;
    }

    @Override
    public String toString() {
        return "ProductList{" +
                "products=" + products +
                '}';

    }

    public static void main(String[] args) {

        String json = "[\n" +
                "  {\n" +
                "    \"id\":100001,\n" +
                "    \"name\":\"电视\",\n" +
                "    \"price\":4999.0,\n" +
                "    \"des\":\"4k高清,55寸屏幕\"\n" +
                "  },\n" +
                "  {\n" +
                "    \"id\":100002,\n" +
                "    \"name\":\"手机\",\n" +
                "    \"price\":2499.0,\n" +
                "    \"des\":\"骁龙855,8GB内存\"\n" +
                "  },\n" +
                "  {\n" +
                "    \"id\":100003,\n" +
                "    \"name\":\"电脑\",\n" +
                "    \"price\":7999.0,\n" +
                "    \"des\":\"i7处理器,16GB内存\"\n" +
                "  }\n" +
                "]";

        Gson gson = new Gson();

        ProductList productList = gson.fromJson(json, ProductList.class);

        System.out.println(productList);
    }
}

上述代码中,通过ProductList类与JSON数据进行映射,使用fromJson方法将JSON数据转换为ProductList对象,输出ProductList对象的toString方法的结果,即完成了JSON的解析。

以上就是Java中利用gson解析Json实例教程的详细攻略,希望能够对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中利用gson解析Json实例教程 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C/C++ 活动预处理器详解

    下面是对C/C++预处理器的详细讲解: C/C++预处理器简介 C/C++预处理器是C/C++编译过程中的一个重要环节,其作用是在编译之前对源代码进行处理解析,可以理解为是一种对源代码进行预处理的程序。C/C++预处理器用于在编译之前对源代码进行简单的替换和操作,以便更好地对源代码进行编译和调试。 C/C++预处理器主要有以下几个作用: 头文件包含:将头文件…

    C 2023年5月23日
    00
  • Python中的取模运算方法

    当我们需要计算两数之间的余数时,可以使用 Python 中的取模运算符 “%”(百分号). 其中,运算符左侧为被除数,右侧为除数。 示例1: a = 10 b = 3 print(a % b) # 输出为1 上面的代码中,a 为被除数,b 为除数,取模运算符 “%” 计算出 a 除以 b 的余数是 1。 示例2: x = -10 y = 3 print(x …

    C 2023年5月22日
    00
  • C 读取ini文件的实例详解

    当我们使用C语言进行编程过程中,如果想要读取ini文件中的配置信息,可以使用一些第三方库,例如INIReader、INIConfig和libconfig等。这里我们以INIReader为例,讲解一下如何使用C语言读取ini文件中的配置信息。 安装INIReader库 使用C语言读取ini文件需要使用第三方库,这里我们使用INIReader,可以通过以下命令进…

    C 2023年5月22日
    00
  • Lua教程(一):在C++中嵌入Lua脚本

    下面我将为您详细讲解“Lua教程(一):在C++中嵌入Lua脚本”的完整攻略。 一、基本了解 首先,我们需要了解一些基本知识。Lua是一种轻量级的脚本语言,它具有简单易学、快速、可嵌入等特点。Lua被广泛应用于游戏开发、Web应用、嵌入式设备等领域。而在C++中嵌入Lua脚本,则可以更加灵活地实现代码的运行时修改和扩展。 二、环境搭建 在开始嵌入Lua脚本之…

    C 2023年5月23日
    00
  • C语言中数据是如何存储在内存中的

    C语言中的数据类型和变量在内存中的存储方式是有一定规律的。首先,需要了解内存的分配方式和内存地址的概念。内存通常被分为多个“字节(byte)”来管理,每个字节大小为8位,每个字节都有一个唯一的内存地址,用来标记这个字节在计算机内存中的位置。 在C语言中,变量在定义时会被分配相应的内存空间,其大小取决于变量的数据类型。以下是不同数据类型在内存中占据的空间大小:…

    C 2023年5月23日
    00
  • odbcasvc.exe导致CPU使用100%问题的解决办法

    下面是详细讲解“odbcasvc.exe导致CPU使用100%问题的解决办法”的完整攻略。 问题描述 在使用Windows操作系统时,可能会遇到odbcasvc.exe进程占用CPU使用率高的问题,导致电脑变得卡顿、反应慢等。该进程是ODBC服务组件的一部分,主要用于数据库的访问,因此出现问题需要及时解决。 解决办法 停止odbcasvc.exe进程 可能是…

    C 2023年5月23日
    00
  • 一篇文章弄懂C++左值引用和右值引用

    一篇文章弄懂C++左值引用和右值引用 在C++中,左值和右值是很重要的概念。我们可以使用左值引用和右值引用来访问不同类型的值。本文将详细讲解左值引用和右值引用的概念及其用法。 左值和右值 在C++中,每个表达式都具有左值或右值属性。左值是具有标识符的表达式,这些标识符可以作为左值出现在表达式中,例如变量、数组元素等等。右值是不能被放在赋值符号左边的表达式。 …

    C 2023年5月23日
    00
  • C语言如何在字符数组中插入一个字符

    以下是使用C语言在字符数组中插入一个字符的详细攻略: 1. 按照索引位置分割字符数组 首先,我们需要对原始的字符数组进行分割,将需要插入字符的位置之前和之后的部分分别提取出来。 具体而言,对于一个字符数组 str 和需要插入字符的索引位置 index,我们可以分别使用 strncpy() 函数和指针运算来完成分割: char str[MAX_SIZE] = …

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部