如何用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
相关产品推荐
相关产品推荐

