读取jsonArray文件并转换为java对象工具类

news2024/12/24 3:51:26

        json文件中存放jsonArray,将其读取出来并转换为java对象,转换的对象需要根据传入的对象动态转换,工具类编写如下:

import lombok.extern.slf4j.Slf4j;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @create 2023/9/15 15:32
 * @description
 */
@Slf4j
public class JsonToolUtil {

    public static <T> List<T> readJsonArray(String fileName, Class<T> clazz) throws IOException {
        Path f = Paths.get(fileName);
        // 判断文件是否存在
        if (!Files.exists(f)) {
            log.error(String.format("file[%s] not exists", fileName));
            return Collections.emptyList();
        }
        List<String> fileList =  Files.readAllLines(f);
        // 判断文件是否是空文件
        if (fileList.isEmpty()) {
            log.warn(String.format("file[%s] is empty", fileName));
            return Collections.emptyList();
        }
        // 将读取的json文件数据转换为对应的bean
        List<T> list = new ArrayList<>();
        ObjectMapper mapper = new ObjectMapper();
        for(String it : fileList){
            list.add(mapper.readValue(it, clazz));
        }
        return list;
    }
}

        需要转换的java对象:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * @create 2023/9/15 15:44
 * @description
 */
@Data
@EqualsAndHashCode(callSuper = false)
// 并不包含所有的json属性
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserDto {
    // JsonProperty可以将对应的jsonkey指定变量
    @JsonProperty("Name")
    private String name;

    @JsonProperty("Gender")
    private String gender;

    @JsonProperty("Age")
    private Integer age;

}

        测试:

import com.littledyf.domain.UserDto;

import java.io.IOException;
import java.util.List;

/**
 * @create 2023/9/15 15:46
 * @description
 */
public class JsonMain {
    public static void main(String[] args) throws IOException {
        List<UserDto> userDtoList = JsonToolUtil.readJsonArray("C:\\Users\\dengyifan\\Desktop\\test.json", UserDto.class);
        System.out.println(userDtoList);
    }
}

        测试结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1031303.html

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

相关文章

接口自动化测试TestNG框架环境搭建

TestNG是什么&#xff1f; TestNG是一个功能强大的测试框架&#xff0c;是Junit的一个增强版本&#xff0c;Junit在使用多年之前&#xff0c;TestNG才生效存在。NG 代表“下一代”。 TestNG框架提供了以下功能和解答我们的问题&#xff1a;“为什么我们需要TestNG”&#xff…

39 | selenium基础架构,UI测试架构

什么是测试基础架构&#xff1f; 测试基础架构指的是&#xff0c;执行测试的过程中用到的所有基础硬件设施以及相关的软件设施。因此&#xff0c;我们也把测试基础架构称之为广义的测试执行环境。通常来讲&#xff0c;测试基础架构主要包括以下内容&#xff1a; 执行测试的机器…

BANI时代下,项目如何实现价值交付?

随着时代的变化&#xff0c;继VUCA时代后、新的语言出现&#xff1a;BANI一词逐渐流行起来。BANI&#xff0c;取自四个英文单词 Brittle&#xff08;脆弱的&#xff09;、Anxious&#xff08;焦虑的&#xff09;、Nonlionear&#xff08;非线性的&#xff09;、Incomprehensibl…

CodeTON Round 6 (Div. 1 + Div. 2, Rated, Prizes!)

A.MEXanized Array AC代码: #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N210; int a[N]; int n,k,x; void solve() {cin>>n>>k>>x;if(x<k-1) {cout<<-1<<endl;return;}i…

论文阅读:AugGAN: Cross Domain Adaptation with GAN-based Data Augmentation

Abstract 基于GAN的图像转换方法存在两个缺陷&#xff1a;保留图像目标和保持图像转换前后的一致性&#xff0c;这导致不能用它生成大量不同域的训练数据。论文提出了一种结构感知(Structure-aware)的图像转换网络(image-to-image translation network)。 Proposed Framework…

电路的基本定律——基尔霍夫定律

基尔霍夫定律 &#x1f391;预备知识&#x1f391;基尔霍夫电流定律(KCL)&#x1f383;基尔霍夫电流定律的本质&#xff1a;节点上电荷具有连续性(不会突变)&#x1f383;基尔霍夫电流定律的推广&#xff1a; &#x1f391;基尔霍夫的电压定律(KVL)&#x1f383;基尔霍夫电压定…

高压放大器在哪些领域中可以进行测试实验

高压放大器是一种重要的电子设备&#xff0c;在众多领域中都可以进行测试实验。本文将为您介绍高压放大器在几个主要领域中的测试实验应用。 高压放大器在电力系统领域中扮演着重要的角色。电力系统需要经常进行各种实验&#xff0c;包括测量电压、电流、功率和阻抗等参数。高压…

yolov5的改进思想

Yolo v5一共有四个模型,分别为Yolov5s、Yolov5m、Yolov5l、Yolov5x。 Yolov5s网络最小,速度最少,AP精度也最低,如果检测的以大目标为主,追求速度,倒也是个不错的选择。 其他的三种网络,在此基础上,不断加深加宽网络,AP精度也不断提升,但速度的消耗也在不断增加。 …

网络安全--防火墙

一、防火墙 二、防火墙实验 拓扑图 第一步、准备条件 1、云的设置 单击云设备&#xff0c;先选择UDP&#xff0c;再增加&#xff0c;增加之后就会记录在下面。 再增加一个虚拟的网卡&#xff0c;选择一个电脑中的虚拟网卡&#xff0c;然后增加。 先选择对应端口&#xff0c;…

【大数据开发技术】实验02-Hadoop常用命令

文章目录 Hadoop常用命令1、实验描述2、实验环境3、相关技能4、知识点5、实验步骤6、总结 练习提高 Hadoop常用命令 1、实验描述 熟悉HDFS的命令行接口 2、实验环境 虚拟机数量&#xff1a;3 系统版本&#xff1a;Centos 7.5 Hadoop版本&#xff1a;Apache Hadoop 2.7.3 …

JMeter 常见函数讲解

当使用JMeter进行性能测试或负载测试时&#xff0c;函数是一个非常有用的工具&#xff0c;可以帮助生成动态的测试数据或处理测试结果。 下面是一些常用的JMeter函数的详细讲解和并列示例&#xff1a; 1、__threadNum&#xff1a; 返回当前线程的编号。可以在测试过程中用于…

爬虫获取静态网页数据

自动爬取网页数据 正常情况下是我们使用浏览器输入指定url&#xff0c;对服务器发送访问请求&#xff0c;服务器返回请求信息&#xff0c;浏览器进行解析为我们看到的界面&#xff0c;爬虫就是使用python脚本取代正常的浏览器&#xff0c;获取相应服务器的返回请求信息&#x…

广告牌安全监测系统,用科技护航大型广告牌安全

城市的街头巷尾&#xff0c;处处可见高耸的广告牌&#xff0c;它们以各种形式和颜色吸引着行人的目光。然而&#xff0c;作为城市景观的一部分&#xff0c;广告牌的安全性常常被我们所忽视。广告牌量大面大&#xff0c;由于设计、材料、施工方法的缺陷&#xff0c;加上后期的检…

报错解决: 未能解析此远程名称: ‘raw.githubusercontent.com‘

如果出现类似报错 添加 199.232.68.133 raw.githubusercontent.com 到 C:\Windows\System32\drivers\etc\hosts 的末尾 再尝试执行

【RocketMQ】消息中间件学习笔记

【RocketMQ】消息中间件学习笔记 【一】RocketMQ概述【1】MQ简介【2】MQ永用途&#xff08;1&#xff09;限流削峰&#xff08;2&#xff09;异步解耦&#xff08;3&#xff09;数据收集 【3】RocketMQ 介绍&#xff08;1&#xff09;RocketMQ 特点&#xff08;2&#xff09;Ro…

如何提升LED显示屏显示效果?

影响LED显示屏显示效果的因素有很多&#xff0c;以下是一些主要的因素&#xff1a; LED灯珠的质量和性能&#xff1a;LED灯珠是LED显示屏的核心组件&#xff0c;其质量和性能会直接影响到整个LED显示屏的显示效果。 显示屏的亮度&#xff1a;LED显示屏的亮度是影响显示效果的一…

Solid框架节点级响应性

前言 随着组件化、响应式、虚拟DOM等技术思想引领着前端开发的潮流&#xff0c;相关的技术框架大行其道&#xff0c;就以目前主流的Vue、React框架来说&#xff0c;它们都基于组件化、响应式、虚拟DOM等技术思想的实现&#xff0c;但是具有不同开发使用方式以及实现原理&#…

霍夫曼编码,计算霍夫曼编码树(数字图像处理大题复习 P7)

文章目录 计算出 x1~x6 的树计算 x1~x6 的编码得出霍夫曼编码 w1~w6 计算出 x1~x6 的树 我们先对 x1~x6 进行排序把最底下的加起来&#xff0c;上面写0 下面写1 然后一层一层加上去&#xff0c;注意加上去以后要 重新排序 计算 x1~x6 的编码 举例&#xff0c;从 x5 出发&…

计算机竞赛 深度学习LSTM新冠数据预测

文章目录 0 前言1 课题简介2 预测算法2.1 Logistic回归模型2.2 基于动力学SEIR模型改进的SEITR模型2.3 LSTM神经网络模型 3 预测效果3.1 Logistic回归模型3.2 SEITR模型3.3 LSTM神经网络模型 4 结论5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 …

「UG/NX」Block UI 从列表选择部件SelectPartFromList

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#