提取 Java Response 中的数据

介绍

在 Java 开发中,我们经常需要与外部系统进行交互并获取返回的数据。而对于 HTTP 请求的响应,数据通常以 JSON 或 XML 的形式返回。本文将介绍如何在 Java 中提取响应中的数据,并给出相应的示例代码。

JSON 数据提取

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于表示结构化的数据。Java 提供了许多库来处理 JSON 数据,例如 Jackson、Gson 等。本文以 Jackson 库为例进行讲解。

添加依赖

首先,我们需要在项目中添加 Jackson 的依赖。在 Maven 项目中,可以在 pom.xml 文件中添加以下内容:

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

解析 JSON 数据

假设我们有以下 JSON 数据:

{
  "name": "John",
  "age": 30,
  "email": "john@example.com"
}

我们可以通过以下代码解析 JSON 数据并提取其中的字段:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonParser {
    public static void main(String[] args) {
        String json = "{\"name\":\"John\",\"age\":30,\"email\":\"john@example.com\"}";

        try {
            ObjectMapper objectMapper = new ObjectMapper();
            JsonNode jsonNode = objectMapper.readTree(json);

            String name = jsonNode.get("name").asText();
            int age = jsonNode.get("age").asInt();
            String email = jsonNode.get("email").asText();

            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
            System.out.println("Email: " + email);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

运行以上代码,输出结果如下:

Name: John
Age: 30
Email: john@example.com

使用 Gson 库

除了 Jackson,还可以使用 Gson 库来处理 JSON 数据。Gson 是 Google 提供的一个用于处理 JSON 的 Java 库。使用 Gson,我们可以通过以下代码解析 JSON 数据并提取其中的字段:

import com.google.gson.Gson;

public class GsonParser {
    public static void main(String[] args) {
        String json = "{\"name\":\"John\",\"age\":30,\"email\":\"john@example.com\"}";

        try {
            Gson gson = new Gson();
            Person person = gson.fromJson(json, Person.class);

            System.out.println("Name: " + person.getName());
            System.out.println("Age: " + person.getAge());
            System.out.println("Email: " + person.getEmail());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    static class Person {
        private String name;
        private int age;
        private String email;

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }

        public String getEmail() {
            return email;
        }
    }
}

运行以上代码,输出结果与之前相同:

Name: John
Age: 30
Email: john@example.com

XML 数据提取

除了 JSON,还有一种常见的数据格式是 XML(eXtensible Markup Language)。Java 提供了多种方式来解析 XML 数据,例如使用 DOM、SAX 或 JAXB 等。本文以使用 DOM 解析 XML 数据为例进行讲解。

解析 XML 数据

假设我们有以下 XML 数据:

<person>
  <name>John</name>
  <age>30</age>
  <email>john@example.com</email>
</person>

我们可以通过以下代码解析 XML 数据并提取其中的字段:

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

public class XmlParser {
    public static void main(String[] args) {
        String xml = "<person><name>John</name><age>30</age><email>john@example.com</email></person>";

        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(new ByteArrayInputStream(xml.getBytes()));

            Element personElement = document.getDocumentElement();

            NodeList nameList = personElement.getElementsByTagName("name");
            String name = nameList.item(0).getTextContent();

            NodeList ageList = personElement.getElementsByTagName("age");
            int age = Integer.parseInt(ageList.item(0).getTextContent());

            NodeList email