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

使用go-yaml/yaml解析YAML时EncryptKey未提取的问题排查

问题解决:yaml库解析时EncryptKey字段未被提取

我刚帮你排查了这个问题,核心原因就是一个小疏忽——你在结构体字段上用错了标签!

问题根源

gopkg.in/yaml.v2库在解析YAML内容时,只会识别**yaml:"字段名"**格式的结构体标签,而你代码里给Port和EncryptKey加的是json:"xxx"标签,这是给encoding/json库用的,yaml库根本不会读取它,所以EncryptKey字段自然没被正确映射。

修正后的代码

把结构体的标签替换成yaml格式即可:

package main

import (
    "fmt"
    "log"
    "gopkg.in/yaml.v2"
)

var data = `
port: 8080
encryptKey: "jfgjfgkfgd"
`

type Config struct {
    Port       int    `yaml:"port"`
    EncryptKey string `yaml:"encryptKey"`
}

func main() {
    t := Config{}
    err := yaml.Unmarshal([]byte(data), &t)
    if err != nil {
        log.Fatalf("error: %v", err)
    }
    fmt.Printf("--- t:\n%v\n\n", t)
}

运行结果

修正后再运行,就能看到EncryptKey字段被正确提取了:

--- t:
{8080 jfgjfgkfgd}

简单来说,不同的序列化/反序列化库依赖各自的标签来匹配字段,yaml库用yaml标签,json库用json标签,可不能搞混哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:50:34