浅谈JSON数据转换

核心思路:先校验再转换

1.转化成实体类对象

Map<String, Object> extendMap = JSONUtil.parseObj(extend);
if (attachInfoObj != null) {		
    Object attachInfosObject = extendMap.get("attachInfos");
    // 校验是否为JSON对象类型(JSONObject或Map,这两种是JSON解析的常见类型)
    attachInfoObj instanceof JSONObject || attachInfoObj instanceof Map
    // 使用Hutool的Convert工具类转换
    attachInfo = Convert.convert(AttachInfo.class, attachInfoObj);
}
  

2.转换列表对象

Map<String, Object> extendMap = JSONUtil.parseObj(extend);
		
		Object attachInfosObject = extendMap.get("attachInfos");
		List<AttachInfo> arrayList = new ArrayList<>();
		if (!ObjectUtil.isEmpty(attachInfosObject)) {
			// 使用Hutool.Convert工具类,将List<?>转为目标类型List<AttachInfo>
			arrayList = Convert.toList(AttachInfo.class, (List<?>) attachInfosObject);
			// 处理空集合(避免后续遍历NullPointerException)
		}

3.转换成基础类型

String title = extendMap.get("title").toString();

总结

instanceof 运算符的基本原理

instanceof 是 Java 的二元运算符,语法为:

对象 instanceof 类型

其作用是:判断左侧对象的运行时类型是否是右侧类型(或其子类型、实现类)的实例,返回 boolean 值(true 或 false)。

Hutool.Convert安全类型转换

1.convert 是一个泛型方法。

        1.支持多类型转换;

        2.自动处理空值;

        3.类型不匹配时的容错。

2.toList内部会遍历原始集合的每个元素,自动将其转换为目标对象。

  • 若元素是Map<String, Object>(JSON 对象解析后的常见类型),会根据键名匹配实体类的字段并赋值;

  • 若元素是JSONObject(Hutool 的 JSON 对象),会调用其toBean方法转换为目标实体类;

  • 转换失败的元素会被忽略(不会抛出异常,保证整体流程不中断)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值