Release v2.1.1 - 修复bool类型JSON解析错误
SpeedTestUp v2.1.1 发布
🐛 紧急修复
API兼容性增强 - 支持bool类型
问题描述:
在v2.1.0版本中,程序无法正确处理API返回的布尔值(boolean)类型数据,导致JSON解析失败。
错误信息:
json: cannot unmarshal bool into Go struct field .data.upHExpireT of type json.Number
问题原因:
speedtest.cn API返回的 *ExpireT 时间戳字段非常灵活,可能包含多种数据类型:
- ✅ float64 - 时间戳数字(如:
1700000000) - ✅ string - 字符串时间戳(如:
"2024-01-01 12:00:00") - ✅ string -
"false"表示未开通 - ❌ bool -
false表示未开通(新增) - ✅ nil -
null表示空值
修复内容:
1. 增强字段类型支持
// 从:
DownExpireT json.Number `json:"downExpireT"`
// 改为:
DownExpireT interface{} `json:"downExpireT"`将所有6个时间戳字段的类型改为 interface{},全面支持API返回的各种数据格式。
2. 增强解析函数
func parseTimestamp(timestampVal interface{}) (time.Time, error) {
// 支持 string/float64/bool/json.Number/nil
switch v := timestampVal.(type) {
case string:
timestampStr = v
case float64:
timestampStr = fmt.Sprintf("%.0f", v)
case bool:
if !v { return time.Time{}, nil }
case json.Number:
timestampStr = v.String()
case nil:
return time.Time{}, nil
}
// ... 解析时间戳
}📊 API格式支持汇总
修复后,程序能处理以下所有格式:
| 数据类型 | 格式 | 示例 | 处理结果 |
|---|---|---|---|
| float64 | 数字 | 1700000000 |
解析为时间 |
| string | 时间字符串 | "2024-01-01 12:00:00" |
解析为时间 |
| string | "false" | "false" |
返回零值(未开通) |
| bool | false | false |
返回零值(未开通) |
| bool | true | true |
返回错误(异常) |
| nil | null | null |
返回零值(空) |
| json.Number | 封装的数字 | 1700000000 |
解析为时间 |
🎯 兼容性矩阵
| 版本 | 支持的类型 | bool类型 | string "false" | float64 | string时间 |
|---|---|---|---|---|---|
| v2.1.0 | ❌ | ✅ | ✅ | ✅ | ✅ |
| v2.1.1 | ✅ | ✅ | ✅ | ✅ | ✅ |
🔧 升级建议
如果你在使用 v2.1.0:
- ✅ 强烈建议升级到此版本
- 🐛 修复了可能导致程序崩溃的JSON解析错误
- ⚡ 提高了API兼容性
如果你在使用 v2.0.0:
- ✨ 直接升级到 v2.1.1 可获得全部新功能
- 🐛 包含v2.1.0的所有功能和v2.1.1的所有修复
📦 下载与使用
升级命令
cd /path/to/speedtestup
git pull origin main
go build -o speedup .下载
- 源代码: Source code (zip)
- 源代码: Source code (tar.gz)
📝 完整更新日志
版本信息:
- v2.1.0 - 首次支持自动提速状态检测
- v2.1.1 - 修复bool类型JSON解析错误
🤖 本次发布由 Claude Code 协助完成