Skip to content

Release v2.1.1 - 修复bool类型JSON解析错误

Choose a tag to compare

@nick3 nick3 released this 12 Nov 12:26
· 3 commits to main since this release

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 .

下载

📝 完整更新日志

查看完整的v2.1.1提交历史


版本信息:

  • v2.1.0 - 首次支持自动提速状态检测
  • v2.1.1 - 修复bool类型JSON解析错误

🤖 本次发布由 Claude Code 协助完成