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


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

    1. import lombok.extern.slf4j.Slf4j;
    2. import com.fasterxml.jackson.databind.ObjectMapper;
    3. import java.io.IOException;
    4. import java.nio.file.Files;
    5. import java.nio.file.Path;
    6. import java.nio.file.Paths;
    7. import java.util.ArrayList;
    8. import java.util.Collections;
    9. import java.util.List;
    10. /**
    11. * @create 2023/9/15 15:32
    12. * @description
    13. */
    14. @Slf4j
    15. public class JsonToolUtil {
    16. public static List readJsonArray(String fileName, Class clazz) throws IOException {
    17. Path f = Paths.get(fileName);
    18. // 判断文件是否存在
    19. if (!Files.exists(f)) {
    20. log.error(String.format("file[%s] not exists", fileName));
    21. return Collections.emptyList();
    22. }
    23. List fileList = Files.readAllLines(f);
    24. // 判断文件是否是空文件
    25. if (fileList.isEmpty()) {
    26. log.warn(String.format("file[%s] is empty", fileName));
    27. return Collections.emptyList();
    28. }
    29. // 将读取的json文件数据转换为对应的bean
    30. List list = new ArrayList<>();
    31. ObjectMapper mapper = new ObjectMapper();
    32. for(String it : fileList){
    33. list.add(mapper.readValue(it, clazz));
    34. }
    35. return list;
    36. }
    37. }

            需要转换的java对象

    1. import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    2. import com.fasterxml.jackson.annotation.JsonProperty;
    3. import lombok.Data;
    4. import lombok.EqualsAndHashCode;
    5. /**
    6. * @create 2023/9/15 15:44
    7. * @description
    8. */
    9. @Data
    10. @EqualsAndHashCode(callSuper = false)
    11. // 并不包含所有的json属性
    12. @JsonIgnoreProperties(ignoreUnknown = true)
    13. public class UserDto {
    14. // JsonProperty可以将对应的jsonkey指定变量
    15. @JsonProperty("Name")
    16. private String name;
    17. @JsonProperty("Gender")
    18. private String gender;
    19. @JsonProperty("Age")
    20. private Integer age;
    21. }

            测试:

    1. import com.littledyf.domain.UserDto;
    2. import java.io.IOException;
    3. import java.util.List;
    4. /**
    5. * @create 2023/9/15 15:46
    6. * @description
    7. */
    8. public class JsonMain {
    9. public static void main(String[] args) throws IOException {
    10. List userDtoList = JsonToolUtil.readJsonArray("C:\\Users\\dengyifan\\Desktop\\test.json", UserDto.class);
    11. System.out.println(userDtoList);
    12. }
    13. }

            测试结果:

  • 相关阅读:
    斐波那契数列Kotlin的N种实现方式
    小程序中如何使用自定义组件应用及搭建个人中心布局
    elasticsearch5.6设置用户名密码
    网络编程扩展
    高并发,不怕不怕「限流算法第一把法器:计数器法」
    PostgreSQL性能调优:优化查询和索引设计
    【HMS core】【FAQ】push kit、AR Engine、广告服务、扫描服务典型问题合集2
    竞赛选题 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉
    jwt 实现用户登录完整java
    简述Vuex(重要)
  • 原文地址:https://blog.csdn.net/qq_41061437/article/details/132905684