You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java提取JSON中第一个邮箱值(abc@test.com)

Java提取JSON中mail数组的第一个邮箱值

目标JSON数据:

{
  "profiles": [
    {
      "userId": "1234",
      "content": {
        "address": {
          "business": {
            "country": "IN",
            "locality": "Chennai"
          }
        },
        "name": {
          "first": "abc",
          "last": "abc"
        },
        "mail": [
          "abc@test.com",
          "xyz@test.com"
        ]
      }
    }
  ]
}

以下是三种Java常用JSON处理库的实现方案:

方法一:使用Jackson库

Jackson是Java生态中主流的JSON处理库,先添加Maven依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version> <!-- 可替换为最新稳定版 -->
</dependency>

代码实现:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;

public class JacksonExtractDemo {
    public static void main(String[] args) {
        String json = "上述JSON字符串";
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            JsonNode rootNode = objectMapper.readTree(json);
            // 逐层定位到mail数组第一个元素
            JsonNode firstMailNode = rootNode.path("profiles")
                                            .get(0)
                                            .path("content")
                                            .path("mail")
                                            .get(0);
            if (firstMailNode.isTextual()) {
                System.out.println("第一个邮箱:" + firstMailNode.asText());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

path()方法在节点不存在时返回空节点,不会直接抛出异常;若确定结构稳定,也可使用get()方法,但需注意空指针风险。

方法二:使用Gson库

Gson是Google推出的轻量JSON处理库,添加Maven依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version> <!-- 可替换为最新稳定版 -->
</dependency>

代码实现:

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class GsonExtractDemo {
    public static void main(String[] args) {
        String json = "上述JSON字符串";
        JsonObject rootObj = JsonParser.parseString(json).getAsJsonObject();
        
        JsonArray profilesArray = rootObj.getAsJsonArray("profiles");
        JsonObject firstProfile = profilesArray.get(0).getAsJsonObject();
        
        JsonObject content = firstProfile.getAsJsonObject("content");
        JsonArray mailArray = content.getAsJsonArray("mail");
        String firstMail = mailArray.get(0).getAsString();
        
        System.out.println("第一个邮箱:" + firstMail);
    }
}

如果JSON结构可能存在缺失,建议提前用null判断避免抛出异常。

方法三:使用org.json库

org.json是轻量级原生风格JSON库,添加Maven依赖:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20230618</version> <!-- 可替换为最新稳定版 -->
</dependency>

代码实现:

import org.json.JSONArray;
import org.json.JSONObject;

public class OrgJsonExtractDemo {
    public static void main(String[] args) {
        String json = "上述JSON字符串";
        JSONObject rootObj = new JSONObject(json);
        
        JSONArray profilesArray = rootObj.getJSONArray("profiles");
        JSONObject firstProfile = profilesArray.getJSONObject(0);
        
        JSONObject content = firstProfile.getJSONObject("content");
        JSONArray mailArray = content.getJSONArray("mail");
        String firstMail = mailArray.getString(0);
        
        System.out.println("第一个邮箱:" + firstMail);
    }
}

该库方法在节点不存在时会抛出JSONException,不确定结构时可先用has()方法判断节点是否存在。

内容的提问来源于stack exchange,提问作者Mohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:03:19