Java 读取特定目录下子文件夹的 json格式文件并解析

news/2024/9/23 0:43:50/

一、需求

  有一个目录结构,包含多个子文件夹,每个子文件夹中都有一个名为goods.txt的文件,文件内容以 JSON 格式存储。现在需要将所有的goods.txt文件内容读取出来,放在一个`List`集合中,以便进行后续的处理。

二、使用类库

1.JDK8
2. FastJSON2:解析 JSON 格式的数据。
3. Lombok:简化代码。

三、代码实现

goods.txt内容格式化后如下所示:
{"brand": "brand","imgList": [{"imgurl": "xxxxxx.jpg"}],"model": "500ml","name": "name","price": "290.00","priceFrom": "xxxxxxs","spiderUrl": "xxxxx","unit": "RMB"
}

功能代码:

java">import com.alibaba.fastjson2.JSON;
import lombok.Data;import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;/*** 文件读取控制器,用于读取特定目录下子文件夹中的 goods.txt 文件并解析为 DataVersionResult 对象。*/
public class FIleReadController {public static void main(String[] args) {// 定义要遍历的目录路径String directoryPath = "E:/software/test/toiletrie/";// 创建用于存储解析后的 DataVersionResult 对象的列表List<DataVersionResult> resultList = new ArrayList<>();// 获取指定目录下的所有子文件夹File directory = new File(directoryPath);File[] subdirectories = directory.listFiles(File::isDirectory);if (subdirectories!= null) {// 遍历子文件夹for (File subdirectory : subdirectories) {// 构建 goods.txt 文件的完整路径File goodsFile = new File(subdirectory, "goods.txt");if (goodsFile.exists()) {try {// 读取 goods.txt 文件的内容String jsonContent = new String(Files.readAllBytes(goodsFile.toPath()));// 使用 FastJSON2 解析 JSON 字符串为 DataVersionResult 对象DataVersionResult goods = JSON.parseObject(jsonContent, DataVersionResult.class);// 将解析后的对象添加到列表中resultList.add(goods);} catch (IOException e) {e.printStackTrace();}}}}// 对 resultList 进行后续处理,我的是转为excel,略}
}/*** 数据版本结果类。*/
@Data
class DataVersionResult {private Integer index;private String url;private String category;private String detailCategory;private String name;private String description;private String brand;private String model;private String price;private String priceFrom;private String spiderUrl;private Long productId;private String unit;private List<ProductImgUrl.ProductImg> imgList;
}/*** 产品图片 URL 类。*/
@Data
class ProductImgUrl implements Serializable {private List<ProductImg> imglist;@Data@AllArgsConstructor@NoArgsConstructorstatic class ProductImg implements Serializable {private String imgurl;}
}

  通过File类获取指定目录下的所有子文件夹。在遍历子文件夹的过程中,为每个子文件夹构建goods.txt文件的路径。如果该文件存在,就尝试读取其内容。

  使用 FastJSON2 的JSON.parseObject方法将 JSON 字符串解析为DataVersionResult类的对象。

  希望这篇文章对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言。


所有的大人都曾经是小孩,虽然,只有少数人记得。 --《小王子》


http://www.ppmy.cn/news/1529080.html

相关文章

记录可编辑表格(未完整)

每一行都独立 <el-table-column label"操作" width"220" fixed"right"><template #default"{ row, $index }"><el-buttonv-if"!row.tableEditFlag"type"primary"size"small"click"…

python 异步读取文件,速度变快了吗

“python 异步读取文件&#xff0c;速度变快了吗” 当我问出这个问题&#xff0c;大部分人第一反应应该是python新人&#xff0c;不懂异步 首先说一下我对异步的理解&#xff1a; asyncio 是 gevent greenlet 的组合gevent 底层使用了libev、selectors 模块&#xff0c;这两…

JAVA基础:正则表达式,String的intern方法,StringBuilder可变字符串特点与应用,+连接字符串特点

1 String中的常用方法2 1.1 split方法 将字符串按照指定的内容进行分割&#xff0c;将分割成的每一个子部分组成一个数组 分割内容不会出现在数组中 实际上该方法不是按照指定的简单的符号进行分割的&#xff0c;而是按照正则表达式进行分割 1.2 正则表达式 用简单的符号组合…

SVM原理

SVM 这里由于过了很长时间 博主当时因为兴趣了解了下 博主现在把以前的知识放到博客上 作为以前的学习的一个结束 这些东西来自其他资料上 小伙伴看不懂英文的自行去翻译下吧 博主就偷个懒了 多维空间和低维空间 不一样的分法&#xff0c;将数据映射到高维 &…

Rasa对话模型——做一个语言助手

1、Rasa模型 1.1 模型介绍 Rasa是一个用于构建对话 AI 的开源框架&#xff0c;主要用于开发聊天机器人和语音助手。Rasa 提供了自然语言理解&#xff08;NLU&#xff09;和对话管理&#xff08;DM&#xff09;功能&#xff0c;使开发者能够创建智能、交互式的对话系统。 1.2…

PostgreSQL 的 logger 进程和 Oracle 的 diag 进程对比

PostgreSQL 的 logger 进程和 Oracle 的 diag 进程对比 PostgreSQL 和 Oracle 数据库在日志记录和诊断进程这方面各自有自己的实现方式&#xff0c;但是目的都是类似的&#xff1a;记录和诊断数据库系统的运行状态、错误和其他重要事件。以下是对 PostgreSQL 的 logger 进程和…

大语言模型应用的业务架构点

背景 在国内某小龙干了一段时间了&#xff0c;困于时间、资本、人力等等原因&#xff0c;其实应用在工程侧的业务架构建模并没有做好。但是&#xff0c;随着业务迭代和读论文&#xff0c;对于大语言模型的应用&#xff08;自认为&#xff09;有一定的认知了&#xff0c;那么业…

828华为云征文 | 云服务器Flexus X实例:one-api 部署,支持众多大模型

目录 一、one-api 介绍 二、部署 one-api 2.1 拉取镜像 2.2 部署 one-api 三、运行 one-api 3.1 添加规则 3.2 运行 one-api 四、添加大模型 API 4.1 添加大模型 API 五、总结 本文通过 Flexus云服务器X实例 部署 one-api。Flexus云服务器X实例是新一代面向中小企业…