详解Java中JSON数据的生成与解析

详解Java中JSON数据的生成与解析

JSON数据格式现在已经成为了网络数据交换的标准之一,Java作为一门主流语言,当然也提供了很好的生成和解析JSON数据的库。下面我们来详细讲解如何在Java中生成和解析JSON数据。

JSON数据的生成

Java提供了许多第三方库用于生成JSON数据,其中Jackson库是比较常用的一种,我们就以这个库为例来讲解如何在Java中生成JSON数据。

Jackson库的引入

Jackson库对于Java来说是一种重要的JSON处理库,它可以将Java对象序列化为JSON格式,也可以将JSON字符串反序列化成Java对象。在使用Jackson库之前,我们需要先引入它的依赖包。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.12.3</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.3</version>
</dependency>

Java对象转JSON格式

使用Jackson库将Java对象转换为JSON格式的字符串需要先创建一个ObjectMapper对象,然后调用该对象的writeValueAsString()方法。

public class Person {
    private String name;
    private int age;

    // setter, getter
}

public static void main(String[] args) throws JsonProcessingException {
    Person person = new Person();
    person.setName("张三");
    person.setAge(20);

    ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(person);

    System.out.println(json);
}

执行上述代码后,我们会得到以下输出结果:

{"name":"张三","age":20}

复杂Java对象转JSON格式

如果需要将一个复杂的Java对象转换为JSON格式的字符串,我们可以使用Jackson库提供的@JsonInclude注解来控制序列化时的规则。例如,使用@JsonInclude注解的方式可以解决当对象中出现null值时序列化时出现异常的问题。

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Person {
    private String name;
    private int age;
    private List<Address> addressList;

    // setter, getter
}

public static void main(String[] args) throws JsonProcessingException {
    Person person = new Person();
    person.setName("张三");
    person.setAge(20);

    Address address = new Address();
    address.setProvince("北京市");
    address.setCity("北京市");
    address.setDistrict("海淀区");
    address.setStreet("科学园路");
    person.setAddressList(Collections.singletonList(address));

    ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(person);

    System.out.println(json);
}

执行上述代码后,我们会得到以下输出结果:

{"name":"张三","age":20,"addressList":[{"province":"北京市","city":"北京市","district":"海淀区","street":"科学园路"}]}

JSON数据的解析

使用Jackson库将JSON格式的字符串转换为Java对象需要先创建一个ObjectMapper对象,然后调用该对象的readValue()方法。

JSON字符串转Java对象

public static void main(String[] args) throws JsonProcessingException {
        String json = "{\"name\":\"张三\",\"age\":20}";

        ObjectMapper mapper = new ObjectMapper();
        Person person = mapper.readValue(json, Person.class);

        System.out.println(person.getName());
        System.out.println(person.getAge());
    }

执行上述代码后,我们会得到以下输出结果:

张三
20

复杂JSON字符串转Java对象

public static void main(String[] args) throws JsonProcessingException {
        String json = "{\"name\":\"张三\",\"age\":20,\"addressList\":[{\"province\":\"北京市\",\"city\":\"北京市\",\"district\":\"海淀区\",\"street\":\"科学园路\"}]}";

        ObjectMapper mapper = new ObjectMapper();
        Person person = mapper.readValue(json, Person.class);

        System.out.println(person.getName());
        System.out.println(person.getAge());
        System.out.println(person.getAddressList().get(0).getProvince());
        System.out.println(person.getAddressList().get(0).getCity());
        System.out.println(person.getAddressList().get(0).getDistrict());
        System.out.println(person.getAddressList().get(0).getStreet());
    }

执行上述代码后,我们会得到以下输出结果:

张三
20
北京市
北京市
海淀区
科学园路

至此,我们已经学会了如何在Java中生成和解析JSON数据的全过程。

阅读剩余 67%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java中JSON数据的生成与解析 - Python技术站

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

相关文章

  • Java泛型最全知识总结

    Java泛型最全知识总结 什么是Java泛型? Java泛型是JDK 5之后引入的新特性,它可以让我们编写更加安全和简洁的程序。它通过参数化类型的概念来实现,可以让我们在编译期检查类型安全,避免了很多传统上容易出现的运行期异常。 泛型的基本语法 泛型语法可以分为四种:泛型类、泛型方法、泛型接口、泛型通配符。 泛型类 泛型类使用<T>或其他类型参数…

    Java 2023年5月26日
    00
  • Sprint Boot @EnableConfigurationProperties使用方法详解

    Spring Boot的@EnableConfigurationProperties注解 在Spring Boot中,@EnableConfigurationProperties注解用于启用@ConfigurationProperties注解的类。使用@EnableConfigurationProperties注解可以将@ConfigurationPrope…

    Java 2023年5月5日
    00
  • 在Java的Struts框架中ONGL表达式的基础使用入门

    对于在Java的Struts框架中ONGl表达式的基础使用入门,我将提供以下攻略: 一、什么是Struts框架 Struts框架是一个基于模型-视图-控制器(MVC)的web应用程序框架。它由Apache软件基金会开发,并且拥有活跃的社区支持和用户。它允许开发人员分离业务逻辑和用户界面,从而使开发人员能够更专注于他们的核心业务。 二、什么是OGNL表达式 O…

    Java 2023年5月20日
    00
  • c# 实现雪花分形的示例

    C# 实现雪花分形的示例攻略 什么是雪花分形 雪花分形指的是由Koch曲线组成的图形。Koch曲线是一条无限长的分形曲线,由等边三角形递归地扩展而来。 实现步骤 第一步:绘制基础图形 首先,我们需要绘制一个等边三角形,作为雪花分形的基础图形。 Graphics g = this.CreateGraphics(); Pen pen = new Pen(Colo…

    Java 2023年5月26日
    00
  • 解决spring data redis的那些坑

    针对解决 Spring Data Redis 的坑,可以分别从以下几个方面进行讲解: 1. 配置 RedisTemplate 在使用 Spring Data Redis 的过程中,需要创建 RedisTemplate 对象来操作 Redis 数据库。但是,如果配置不当,会遇到一些问题。下面是配置 RedisTemplate 的步骤: 需要创建 RedisCo…

    Java 2023年5月20日
    00
  • javaweb登录验证码的实现方法

    下面是“JavaWeb登录验证码的实现方法”的详细攻略: 什么是验证码 验证码(Verification Code)是一种用于判断用户是否为人类的简单程序,主要目的是防止恶意程序对网站进行暴力破解或网络爬虫行为。常见的验证码包括数字、字母、图片、数学公式等形式,验证码输入错误时,通常会跳出提示框要求重新输入。 JavaWeb登录验证码的实现方法 JavaWe…

    Java 2023年6月15日
    00
  • java中基本数据类型与Object的关系说明

    Java中基本数据类型与Object的关系说明 在Java中,基本数据类型和Object类型之间存在着一些关系,本文将介绍它们之间的区别和联系。 基本数据类型和对象类型 Java中有8种基本数据类型,它们分别是byte、short、int、long、float、double、char和boolean。而除了基本数据类型之外,其他的都是对象类型。 基本数据类型…

    Java 2023年5月26日
    00
  • Windows环境下实现Jenkins部署的教程详解

    下面我将为您详细讲解“Windows环境下实现Jenkins部署的教程详解”的完整攻略。 一、环境搭建 首先需要先搭建Jenkins的环境,Windows环境下搭建Jenkins可以参考以下步骤: 下载并安装Java SDK,Jenkins运行需要Java环境,下载地址为: https://www.oracle.com/java/technologies/j…

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