기록 : 467
시나리오 : Json 문자열을 기반으로 해당 Java 객체를 디자인합니다. fastjson의 JSON 및 hutool의 JSONUtil을 사용하여 유효성 검사를 위해 Java 개체를 Json 문자열로 변환합니다.
버전 : JDK 1.8, Spring Boot 2.6.3, fastjson-2.0.33, hutool-all-5.8.12.
1.Json 문자열
다음 Json 문자열을 기반으로 Java 개체를 디자인합니다.
{
"provinceName": "浙江省",
"areaNumber": "330000",
"data": {
"dataFlag": "01",
"cityData": {
"dataList": [{
"cityDescribe": "杭州是互联网城市",
"cityId": 2023062801,
"cityName": "杭州",
"updateTime": "2023-06-28 22:29:59"
}, {
"cityDescribe": "宁波是港口城市",
"cityId": 2023062802,
"cityName": "宁波",
"updateTime": "2023-06-28 22:29:59"
}]
}
}
}
2. Java 객체에 해당
2.1 자바 객체 ProvinceDto
(1) 샘플 코드
@Data
@Builder
public class ProvinceDto<T> implements Serializable {
private String provinceName;
private String areaNumber;
private T data;
}
(2) 분석 코드
ProvinceDto 객체는 Json 문자열의 provinceName, areaNumber 및 데이터 속성에 해당합니다.
2.2 자바 객체 DataDto
(1) 샘플 코드
@Data
@Builder
public class DataDto<T> implements Serializable {
private String dataFlag;
private T cityData;
}
(2) 분석 코드
DataDto 객체는 JSON 문자열의 데이터 속성의 dataFlag 및 cityData 속성에 해당합니다.
2.3자바 개체 CityDataDto
(1) 샘플 코드
@Data
@Builder
public class CityDataDto<T> implements Serializable {
private T dataList;
}
(2) 분석 코드
CityDataDto 개체는 JSON 문자열의 data 속성 중 cityData 속성의 dataList 속성에 해당합니다.
2.4자바 개체 CityDto
(1) 샘플 코드
@Data
@Builder
public class CityDto implements Serializable {
private Long cityId;
private String cityName;
private String cityDescribe;
private String updateTime;
}
(2) 분석 코드
CityDto 개체는 JSON 문자열의 데이터 속성 중 cityData 속성의 dataList 속성 목록에 있는 개체에 해당합니다.
3. fastjson의 JSON 도구 클래스를 사용하여 Java 개체를 Json 문자열로 변환
3.1 샘플 코드
public static void main(String[] args) {
CityDto hangzhouDto = CityDto.builder()
.cityId(2023062801L)
.cityName("杭州")
.cityDescribe("杭州是互联网城市")
.updateTime(DateUtil.formatDateTime(new Date())).build();
CityDto ningboDto = CityDto.builder()
.cityId(2023062802L)
.cityName("宁波")
.cityDescribe("宁波是港口城市")
.updateTime(DateUtil.formatDateTime(new Date())).build();
List<Object> dataList = Arrays.asList(hangzhouDto, ningboDto);
CityDataDto<Object> cityDataDto = CityDataDto.builder()
.dataList(dataList).build();
DataDto<Object> dataDto = DataDto.builder()
.dataFlag("01")
.cityData(cityDataDto).build();
ProvinceDto<Object> provinceDto = ProvinceDto.builder()
.provinceName("浙江省")
.areaNumber("330000")
.data(dataDto)
.build();
String province = JSON.toJSONString(provinceDto);
System.out.println("把ProvinceDto对象转换为Json字符串");
System.out.println(province.toString());
}
3.2 변환 결과
{
"provinceName": "浙江省",
"areaNumber": "330000",
"data": {
"dataFlag": "01",
"cityData": {
"dataList": [{
"cityDescribe": "杭州是互联网城市",
"cityId": 2023062801,
"cityName": "杭州",
"updateTime": "2023-06-28 22:29:59"
}, {
"cityDescribe": "宁波是港口城市",
"cityId": 2023062802,
"cityName": "宁波",
"updateTime": "2023-06-28 22:29:59"
}]
}
}
}
4. hutool의 JSONUtil 도구 클래스를 사용하여 Java 객체를 Json 문자열로 변환
4.1 샘플 코드
public static void main(String[] args) {
CityDto hangzhouDto = CityDto.builder()
.cityId(2023062901L)
.cityName("苏州")
.cityDescribe("苏州是经济发达城市")
.updateTime(DateUtil.formatDateTime(new Date())).build();
CityDto ningboDto = CityDto.builder()
.cityId(2023062902L)
.cityName("无锡")
.cityDescribe("无锡是一个宜居城市")
.updateTime(DateUtil.formatDateTime(new Date())).build();
List<Object> dataList = Arrays.asList(hangzhouDto, ningboDto);
CityDataDto<Object> cityDataDto = CityDataDto.builder()
.dataList(dataList).build();
DataDto<Object> dataDto = DataDto.builder()
.dataFlag("02")
.cityData(cityDataDto).build();
ProvinceDto<Object> provinceDto = ProvinceDto.builder()
.provinceName("江苏省")
.areaNumber("320000")
.data(dataDto)
.build();
String province = JSONUtil.toJsonStr(provinceDto);
System.out.println("把ProvinceDto对象转换为Json字符串");
System.out.println(province.toString());
}
4.2 변환 결과
{
"provinceName": "江苏省",
"areaNumber": "320000",
"data": {
"dataFlag": "02",
"cityData": {
"dataList": [{
"cityId": 2023062901,
"cityName": "苏州",
"cityDescribe": "苏州是经济发达城市",
"updateTime": "2023-06-28 22:28:51"
}, {
"cityId": 2023062902,
"cityName": "无锡",
"cityDescribe": "无锡是一个宜居城市",
"updateTime": "2023-06-28 22:28:51"
}]
}
}
}
감사합니다.
2023년 6월 28일