uni-app Android 原生插件无法正常获取 Date 类型数据
uni-app Android 原生插件无法正常获取 Date 类型数据
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | macOS Big Sur 11.2 | HBuilderX |
### 操作步骤:
调用原生插件方法,传递对象中包含 Date 类型对象
### 预期结果:
正常展示时间
### 实际结果:
空对象
### bug描述:
原生插件传递对象 value 为 Date 类型时,到原生插件端接收到的为空对象,iOS 正常
1 回复
更多关于uni-app Android 原生插件无法正常获取 Date 类型数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是Android平台下Date类型数据在原生插件通信时的常见问题。问题原因是Android的JSON转换机制与iOS不同,无法自动处理Date对象。
解决方案:
- 在uni-app端将Date对象转换为时间戳或字符串格式再传递:
let params = {
date: new Date().getTime() // 使用时间戳
// 或 date: new Date().toISOString() // 使用ISO格式字符串
}
- 在Android原生插件端接收后自行转换:
// 如果是时间戳
long timestamp = jsonObject.getLong("date");
Date date = new Date(timestamp);
// 如果是ISO字符串
String dateStr = jsonObject.getString("date");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
Date date = format.parse(dateStr);
- 或者统一使用字符串格式传递:
// uni-app端
let params = {
date: '2023-01-01 12:00:00'
}