You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中JSON对象数组反序列化失败问题排查[已解决]

Go天气应用JSON反序列化数组为空的排查与解决

我在学习Go语言时开发了一款天气应用,核心功能之一是通过命令行传入地点或邮编,调用Open Meteo API获取对应位置的天气数据。

问题现象

Open Meteo返回的JSON响应包含results数组,我定义了LocationResponse和Location结构体来映射这个JSON结构,同时编写了组装请求URL、获取响应体的函数。但在main函数中将JSON响应反序列化到结构体后,发现results数组始终未被填充。

排查与解决

经过调试排查,问题出在命令行参数的获取逻辑上:

  • 错误写法:误用os.Args[0],而os.Args[0]返回的是程序本身的名称,并非用户传入的地点/邮编参数
  • 正确写法:应该使用os.Args[1]来获取用户传入的第一个命令行参数,同时建议先判断参数数量避免索引越界

错误代码示例:

// 错误:获取到的是程序名,不是用户输入的地点/邮编
query := os.Args[0]

修正后的代码示例:

import "log"

func main() {
    // 先检查是否传入了参数
    if len(os.Args) < 2 {
        log.Fatal("请在命令行后传入地点或邮编参数")
    }
    // 获取用户传入的第一个参数
    query := os.Args[1]
    // 后续组装请求URL、调用API、反序列化逻辑...
}

修改参数获取逻辑后,请求URL能正确携带用户输入的查询条件,Open Meteo返回正常的results数组,反序列化后结构体中的数据也能正常填充,程序可以输出预期结果。

内容的提问来源于stack exchange,提问作者NCLanceman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.06 02:12:01