Java如何提取JSON文件中多个对象的同名属性并存入ArrayList
解决方案
核心逻辑:你的JSON根节点为对象数组,区别于单对象JSON结构,先将完整JSON内容解析为数组结构,再遍历数组内的每个对象提取name属性存入ArrayList即可,以下是两种Java生态常用JSON库的实现方案:
方案1:使用Jackson实现(Java生态通用标准库)
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.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; public class PortfolioNameExtractor { public static void main(String[] args) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); // 替换为你本地JSON文件的实际路径 JsonNode rootArray = objectMapper.readTree(new File("C:\\your_path\\portfolio.json")); ArrayList<String> portfolioNames = new ArrayList<>(); Iterator<JsonNode> nodeIterator = rootArray.iterator(); while (nodeIterator.hasNext()) { JsonNode portfolioNode = nodeIterator.next(); portfolioNames.add(portfolioNode.get("name").asText()); } // 输出结果验证:[octoberportfolio, jasonportfolio] System.out.println(portfolioNames); } }
方案2:使用Fastjson2实现(高性能JSON库,国内使用广泛)
Maven依赖
<dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.40</version> </dependency> <!-- 以下为文件读取工具依赖,可自行替换为原生JDK文件读取逻辑 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency>
实现代码
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; public class PortfolioNameExtractor { public static void main(String[] args) throws IOException { // 替换为你本地JSON文件的实际路径 String jsonContent = FileUtils.readFileToString(new File("C:\\your_path\\portfolio.json"), StandardCharsets.UTF_8); JSONArray rootArray = JSON.parseArray(jsonContent); ArrayList<String> portfolioNames = new ArrayList<>(); for (int i = 0; i < rootArray.size(); i++) { JSONObject portfolioObj = rootArray.getJSONObject(i); portfolioNames.add(portfolioObj.getString("name")); } // 输出结果验证:[octoberportfolio, jasonportfolio] System.out.println(portfolioNames); } }
内容的提问来源于stack exchange,提问作者Wilhelmo Gutred
相关产品推荐
相关产品推荐

