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

一、需求

  有一个目录结构,包含多个子文件夹,每个子文件夹中都有一个名为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"
}

功能代码:

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.mzph.cn/pingmian/54177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pre-training、Post-training、Continue training的区别

在训练大语言模型时&#xff0c;大家可能会搞混以下几个概念&#xff0c;下面做一个详细的对比区分&#xff1a; 概念Pre-training&#xff08;预训练&#xff09;Post-training&#xff08;后训练&#xff09;Continue Training&#xff08;持续训练&#xff09;定义预训练是…

C# 结合 Javascript 测试获取天气信息

目录 测试效果 范例运行环境 关键代码 C#获取网页数据 前端代码 JavaScript 实现 总结 测试效果 获取一些简单的天气信息&#xff0c;可以丰富我们的应用系统&#xff0c;比如开发一个小桌面&#xff0c;小组件&#xff0c;增加一些实用性的系统功能&#xff0c;本文将…

pip清华源地址

一、pip清华源地址 https://pypi.tuna.tsinghua.edu.cn/simple 二、清华源使用方法 pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple 三、将清华源设置为默认源&#xff1a; pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/si…

neo4j安装为服务+配置环境变量

目录 neo4j安装为服务 windows services 参照JDK&#xff0c;将neo4j加入到环境变量 neo4j安装为服务 windows services 我的上一篇文章详细写明了如何安装启动neo4j《neo4j安装启动教程对应的jdk配置》&#xff0c;文末的启动neo4j是通过cmd命令行访问bin目录&#xff0c;这…

Git+Jenkins 基本使用(Basic Usage of Git+Jenkins)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

Java企业面试题2

1.语言的分代&#xff1a; 第1代&#xff1a;机器语言 机器语言是最底层的计算机编程语言&#xff0c;它是由二进制数构成的一系列指令&#xff0c;直接与计算机硬件交互。每个二进制位模式代表一条特定的指令或数据地址。因为它是直接在硬件上执行的&#xff0c;所以运行效率…

大尺寸卷积核的优缺点

大尺寸卷积核在卷积神经网络中具有一些独特的优缺点&#xff0c;具体如下&#xff1a; 优点&#xff1a; 更大的感受野&#xff1a; 大尺寸卷积核能够捕获更大的上下文信息&#xff0c;拥有更广的感受野。它可以一次性处理更大区域的特征信息&#xff0c;尤其在处理复杂的视觉…

诚邀见证2024九章云极DataCanvas算力包产品发布会!

算力&#xff0c;是驱动全球智能化升级的关键力量&#xff0c;也是智算经济腾飞的主要燃料。 在智算经济腾起之际&#xff0c;我们洞察未来:算力不仅是生产力还将作为社会性普惠AI资源。我们思考未来:算力产品和模式需要何种创新才能够加速算力普惠的进程?我们定义未来:用单位…

react学习笔记一:react介绍

将view规划成一个个的组件&#xff0c;是一个响应式的声明式的设计。 虚拟dom&#xff0c;减少dom操作。vue的虚拟dom是在react的基础上拓展来的。 单向数据流&#xff1a;是一种数据流动的模式。数据流的方向是有上到下的&#xff0c;在react中主要是从父组件流向子组件。 …

Python基础(九)——正则表达式

6.正则表达式 &#xff08;1&#xff09;基础匹配 使用re模块 match方法&#xff1a; re.match(匹配规则&#xff0c;被匹配字符串) 从被匹配字符串开头进行匹配&#xff0c;成功则返回匹配对象包含的信息&#xff0c;失败则返回None。 s "today is a beautiful da…

计算机毕业设计 基于SpringBoot框架的网上蛋糕销售系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

【微处理器系统原理与应用设计第十三讲】通用同/异步收发器USART轮询模式应用设计

USART提供两设备之间的串行双工通信&#xff0c;并支持中断和DMA工作。采用轮询、中断和DMA三种方式进行数据收发。 一、功能需求 实现远程串行通信数据的回传确认。微处理器系统构成的测控设备通过USART&#xff08;串口&#xff09;与用户设备&#xff08;上位机&#xff0…

canvas和svg的区别是什么?它们的应用场景是什么?

区别 绘图方式&#xff1a; Canvas 使用JavaScript API在画布上绘制像素来创建图形&#xff0c;提供了对像素级别的控制&#xff0c;可以实现复杂的图形和动画效果1。SVG 使用XML语法描述图形&#xff0c;是一种基于矢量路径的矢量图形格式&#xff0c;可以无损缩放而不失真1。…

人工智能与机器学习原理精解【21】

文章目录 SVM求两线段上距离最近的两个点问题描述&#xff1a;距离函数&#xff1a;解法&#xff1a;具体步骤&#xff1a;特别注意&#xff1a;示例代码 SVM思想的介入1. **SVM 的基本思想**超平面&#xff1a; 2. **分类间隔&#xff08;Margin&#xff09;**1. **分类间隔的…

每日一题——第八十八题

题目&#xff1a;输入一个9位的无符号整数&#xff0c;判断其是否有重复数字 #include<stdio.h> #include<stdbool.h> #include<string.h> int main() {char num_str[10];printf("请输入一个9位数的无符号数&#xff1a;");scanf_s("%9d&quo…

【Python篇】Python 函数综合指南——从基础到高阶

文章目录 Python 函数综合指南1. 函数介绍1.1 什么是函数&#xff1f;1.2 定义函数示例&#xff1a;1.3 调用函数1.4 函数参数1.4.1 必需参数1.4.2 默认参数1.4.3 关键字参数1.4.4 可变长度参数 2. Python 内置函数2.1 字符串处理函数示例&#xff1a; 2.2 数学函数示例&#x…

基于Spring Boot的能源管理系统+建筑能耗+建筑能耗监测系统+节能监测系统+能耗监测+建筑能耗监测

介绍 建筑节能监测系统是基于计算机网络、物联网、大数据和数据可视化等多种技术融合形成的一套节能监测系统。 系统实现了对建筑电、水、热&#xff0c;气等能源、资源消耗情况的实时监测和预警、动态分析和评估&#xff0c;为用户建立了科学、系统的节能分析方法&#xff0c…

如何让大模型更好地进行场景落地?

自ChatGPT模型问世后&#xff0c;在全球范围内掀起了AI新浪潮。 有很多企业和高校也随之开源了一些效果优异的大模型&#xff0c;例如&#xff1a;Qwen系列模型、MiniCPM序列模型、Yi系列模型、ChatGLM系列模型、Llama系列模型、Baichuan系列模型、Deepseek系列模型、Moss模型…

简单题28-找出字符传中第一个匹配项的下标(Java and Python)20240918

问题描述&#xff1a; Java代码&#xff1a; class Solution {public int strStr(String haystack, String needle) {int n1 haystack.length();int n2 needle.length();if (n2 0) {return 0; // 如果 needle 为空字符串&#xff0c;直接返回 0}if (n1 < n2) {return -…

LeetCode[中等] 142. 环形链表 II

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整…