Java对象类与字符串互转示例

一、功能概述

        功能说明:对象按照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=三年级一班))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值