使用Java进行Json数据的解析(对象数组的相互嵌套)

yizhihongxing

使用Java进行Json数据的解析(对象数组的相互嵌套)有多种方式,其中一种较为常用的方式是通过Jackson库进行解析。以下是使用Jackson库进行Json数据解析的完整攻略:

步骤一:引入Jackson库

在pom.xml中引入Jackson库的dependency:

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

步骤二:解析Json数据

假设有如下Json数据:

{
  "id": 1,
  "name": "John",
  "age": 30,
  "address": {
    "city": "New York",
    "zip": "10001"
  },
  "phones": [
    {
      "type": "home",
      "number": "212-555-1234"
    },
    {
      "type": "fax",
      "number": "646-555-4567"
    }
  ]
}

我们可以先定义一个Java类来映射Json数据:

public class Person {
    private int id;
    private String name;
    private int age;
    private Address address;
    private List<Phone> phones;
    // 省略getter和setter方法
}

public class Address {
    private String city;
    private String zip;
    // 省略getter和setter方法
}

public class Phone {
    private String type;
    private String number;
    // 省略getter和setter方法
}

然后使用ObjectMapper类将Json数据转换为Java对象:

ObjectMapper objectMapper = new ObjectMapper();
String json = "{\"id\":1,\"name\":\"John\",\"age\":30,\"address\":{\"city\":\"New York\",\"zip\":\"10001\"},\"phones\":[{\"type\":\"home\",\"number\":\"212-555-1234\"},{\"type\":\"fax\",\"number\":\"646-555-4567\"}]}";
Person person = objectMapper.readValue(json, Person.class);

现在person对象里就存储了解析后的Json数据。我们可以通过调用getter方法来访问里面的元素,例如:

System.out.println(person.getName()); // 输出 "John"
System.out.println(person.getAddress().getZip()); // 输出 "10001"
System.out.println(person.getPhones().get(1).getNumber()); // 输出 "646-555-4567"

示例1:解析Json数组

如果Json数据中有一个数组,我们可以将它定义为Java List类型,例如:

{
  "students": [
    {
      "name": "John",
      "age": 20
    },
    {
      "name": "Mary",
      "age": 18
    }
  ]
}
public class School {
    private List<Student> students;
    // 省略getter和setter方法
}

public class Student {
    private String name;
    private int age;
    // 省略getter和setter方法
}
String json = "{\"students\":[{\"name\":\"John\",\"age\":20},{\"name\":\"Mary\",\"age\":18}]}";
School school = objectMapper.readValue(json, School.class);

现在我们可以通过调用school对象的getter方法来访问里面的元素,例如:

System.out.println(school.getStudents().get(0).getName()); // 输出 "John"
System.out.println(school.getStudents().get(1).getAge()); // 输出 18

示例2:生成Json数据

Jackson库也可以用来生成Json数据。使用ObjectMapper类的writeValueAsString方法可以将Java对象转换为Json字符串:

Person person = new Person();
person.setId(1);
person.setName("John");
person.setAge(30);
Address address = new Address();
address.setCity("New York");
address.setZip("10001");
person.setAddress(address);
List<Phone> phones = new ArrayList<>();
Phone phone1 = new Phone();
phone1.setType("home");
phone1.setNumber("212-555-1234");
phones.add(phone1);
Phone phone2 = new Phone();
phone2.setType("fax");
phone2.setNumber("646-555-4567");
phones.add(phone2);
person.setPhones(phones);

String json = objectMapper.writeValueAsString(person);

此时json字符串的值为:

{
  "id": 1,
  "name": "John",
  "age": 30,
  "address": {
    "city": "New York",
    "zip": "10001"
  },
  "phones": [
    {
      "type": "home",
      "number": "212-555-1234"
    },
    {
      "type": "fax",
      "number": "646-555-4567"
    }
  ]
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Java进行Json数据的解析(对象数组的相互嵌套) - Python技术站

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

相关文章

  • maven profile动态选择配置文件详解

    下面是本人为你准备的maven profile动态选择配置文件的攻略,希望能帮助到你。 什么是maven profile Maven Profile是Maven中的一个重要概念,它定义了一组配置的集合,用来指定开发、测试和生产环境下使用不同的配置。通过设置不同的Profile,可以实现在不同环境下对应用程序的多个设置的更改。 Maven Profile的配置…

    Java 2023年6月2日
    00
  • 手撸一个Spring Boot Starter并上传到Maven中央仓库

    下面就是手撸一个Spring Boot Starter并上传到Maven中央仓库的完整攻略: 什么是Spring Boot Starter Spring Boot Starter是一个针对特定的场景,预先配置好Spring Boot和第三方库的样板代码模板。这个模板通常包含了对于Spring Boot应用程序的配置、依赖管理、初始化等操作,并通过自动配置的方…

    Java 2023年6月2日
    00
  • java采用中文方式显示时间的方法

    为了让Java程序中以中文方式显示时间,我们可以采用以下两种方法: 使用java.util.Date和java.text.DateFormat 我们可以用java.util.Date类获取当前的日期和时间,并使用java.text.DateFormat类将日期格式化为中文。下面是一个示例: import java.util.Date; import java…

    Java 2023年5月20日
    00
  • 浅谈Java多线程编程中Boolean常量的同步问题

    浅谈Java多线程编程中Boolean常量的同步问题 介绍 在Java多线程编程中,Boolean常量在多个线程中共享时,由于Java的内存模型导致存在一些同步问题。在本文中,我们将讨论这些同步问题并提供解决方案。 Boolean常量的同步问题 在Java中,boolean类型的变量并非原子类型,而是被拆分成了8个bit位存储的。因此,当多个线程访问同一个B…

    Java 2023年5月19日
    00
  • Spring Security实现添加图片验证功能

    标题: Spring Security实现添加图片验证功能 正文:Spring Security是一个基于Spring框架的强大的安全框架,提供了身份验证和授权功能。其中,图片验证功能可以帮助我们增强安全性,防止恶意攻击和非法登录。以下是实现添加图片验证功能的完整攻略。 第一步:添加依赖 在项目的pom.xml文件中添加以下依赖: <dependenc…

    Java 2023年6月3日
    00
  • CAS操作的实现原理是什么?

    CAS(Compare And Swap)是一种并发控制机制,用于保证多线程并发修改时的数据一致性。它主要包括三个操作数:内存地址V、旧的预期值A和新的值B。当且仅当内存地址V的值和预期值A相同时,才把新的值B赋值给内存地址V,否则就什么都不做。下面就来详细讲解一下CAS操作的实现原理: CAS操作的实现原理 在计算机能够完成CAS操作的原理中,有两个非常重…

    Java 2023年5月10日
    00
  • Java线程死锁代码详解

    这里我给你提供一份“Java线程死锁代码详解”的攻略,希望能对你有所帮助。 背景介绍 线程死锁在多线程环境下是非常常见的情况,而解决线程死锁也非常困难,因此需要我们对线程死锁有一个深入的了解。本文将详细讲解Java线程死锁的原因、示例以及如何解决死锁。 什么是线程死锁? 当两个或更多的线程互相持有对方所需要的资源,同时等待对方释放资源,就会出现线程死锁。可以…

    Java 2023年5月24日
    00
  • Ubuntu14.04 安装配置Tomcat7教程

    下面是Ubuntu 14.04安装配置Tomcat7的完整攻略: 1. 安装JAVA Tomcat是基于Java的,因此我们需要先安装JDK。 可以按照以下步骤安装OpenJDK: 更新软件包列表: sudo apt-get update 安装OpenJDK: sudo apt-get install openjdk-7-jdk 安装完成后,通过以下命令检查…

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