Json 문자열에 따라 해당 Java 객체를 설계합니다(fastjson 및 JSONUtil 도구 클래스를 사용하여 확인).

기록 : 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일

Supongo que te gusta

Origin blog.csdn.net/zhangbeizhen18/article/details/131446945
Recomendado
Clasificación