gpt4 book ai didi

json - encoding/json unmarshal 缺少一个字段

转载 作者:IT王子 更新时间:2023-10-29 01:26:14 25 4
gpt4 key购买 nike

以下代码解码“Id”,而不是“主机名”。为什么?我已经盯着它看了足够长的时间了,如果它是一个错字,我知道我永远不会发现它。请帮忙。 ( http://play.golang.org/p/DIRa2MvvAV )

package main

import (
"encoding/json"
"fmt"
)

type jsonStatus struct {
Hostname string `json:host`
Id string `json:id`
}

func main() {
msg := []byte(`{"host":"Host","id":"Identifier"}`)

status := new(jsonStatus)

err := json.Unmarshal(msg, &status)
if err != nil {
fmt.Println("Unmarshall err", err)
}
fmt.Printf("Got status: %#v\n", status)
}

我得到的输出是

Got status: &main.jsonStatus{Hostname:"", Id:"Identifier"}

我期待的地方

Got status: &main.jsonStatus{Hostname:"Host", Id:"Identifier"}

最佳答案

您的字段标签有误。他们需要在备用名称周围加上引号。

type jsonStatus struct {
//--------------------v----v
Hostname string `json:"host"`
Id string `json:"id"`
}

从技术上讲,您根本不需要 Id 字段的标记。这就是该领域发挥作用的原因。

演示: http://play.golang.org/p/tiop27jNJe

关于json - encoding/json unmarshal 缺少一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16021487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com