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

        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  List readJsonArray(String fileName, Class 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 fileList =  Files.readAllLines(f);
        // 判断文件是否是空文件
        if (fileList.isEmpty()) {
            log.warn(String.format("file[%s] is empty", fileName));
            return Collections.emptyList();
        }
        // 将读取的json文件数据转换为对应的bean
        List 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 userDtoList = JsonToolUtil.readJsonArray("C:\\Users\\dengyifan\\Desktop\\test.json", UserDto.class);
        System.out.println(userDtoList);
    }
}

        测试结果:

读取jsonArray文件并转换为java对象工具类_第1张图片

你可能感兴趣的:(Java学习,java,java工具类)