根据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.1Java对象ProvinceDto

(1)示例代码

@Data
@Builder
public class ProvinceDto<T> implements Serializable {
  private String provinceName;
  private String areaNumber;
  private T data;
}

(2)解析代码

ProvinceDto对象对应Json字符串的provinceName、areaNumber、data属性。

2.2Java对象DataDto

(1)示例代码

@Data
@Builder
public class DataDto<T> implements Serializable {
  private String dataFlag;
  private T cityData;
}

(2)解析代码

DataDto对象对应JSON字符串的data属性的dataFlag、cityData属性。

2.3Java对象CityDataDto

(1)示例代码

@Data
@Builder
public class CityDataDto<T> implements Serializable {
  private T dataList;
}

(2)解析代码

CityDataDto对象对应JSON字符串的data属性的cityData属性的dataList属性。

2.4Java对象CityDto

(1)示例代码

@Data
@Builder
public class CityDto implements Serializable {
  private Long cityId;
  private String cityName;
  private String cityDescribe;
  private String updateTime;
}

(2)解析代码

CityDto 对象对应JSON字符串的data属性的cityData属性的dataList属性的List中的对象。

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日

猜你喜欢

转载自blog.csdn.net/zhangbeizhen18/article/details/131446945