一、功能概述
功能说明:对象按照json方式保存到resources目录下后可以通过SONObject.parseObject转成对象
1、创建对比对象
2、文件不存在,则创建对象并转成string写入到指定文件中
3、文件存在,则从指定文件读取string转成DTO对象。
二、实现示例
package org.example.json;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.apache.commons.io.IOUtils;
import org.example.json.dto.ClassDTO;
import org.example.json.dto.PersonDTO;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
/**
* 功能说明:对象按照json方式保存到resources目录下后可以通过SONObject.parseObject转成对象
* 1、创建对比对象
* 2、文件不存在,则创建对象并转成string写入到指定文件中
* 3、文件存在,则从指定文件读取string转成DTO对象
*/
public class JsonFileToObject {
public static void main(String[] args) throws IOException {
File file = new File("src/main/resources/personDTO_json.txt");
PersonDTO personDTO = PersonDTO.builder()
.id(1L)
.name("小明")
.age(10)
.classDTO(ClassDTO.builder()
.id(1L)
.className("三年级一班")
.build())
.build();
System.out.println("personDTO=" + personDTO);
if(!file.exists()) {
if(file.createNewFile()) {
String jsonString = JSON.toJSONString(personDTO, SerializerFeature.PrettyFormat);
try (FileOutputStream fos = new FileOutputStream(file)) {
// 使用 IOUtils.write 方法将内容写入文件
IOUtils.write(jsonString, fos, StandardCharsets.UTF_8);
}
}
}
String personDTOStr =
IOUtils.toString(JsonFileToObject.class
.getClassLoader()
.getResourceAsStream("personDTO_json.txt"));
ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
PersonDTO personDTO1 = JSONObject.parseObject(personDTOStr, PersonDTO.class);
System.out.println("personDTO1=" + personDTO1);
}
}
DTO类
package org.example.json.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ClassDTO {
private Long id;
/**
* 班级名称
*/
private String className;
}
package org.example.json.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PersonDTO {
private Long id;
private String name;
private Integer age;
/**
* 班级信息
*/
private ClassDTO classDTO;
}
Pom依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
输出结果
personDTO=PersonDTO(id=1, name=小明, age=10, classDTO=ClassDTO(id=1, className=三年级一班))
personDTO1=PersonDTO(id=1, name=小明, age=10, classDTO=ClassDTO(id=1, className=三年级一班))