英文:
Go json unmarshal not picking up a single attribute value
问题
我正在尝试将一个JSON HTTP响应解组成我创建的结构体。
API端点返回的JSON数据如下:
[{"Created_Datetime":"2/16/2013 2:57:59 AM",
"Last_Login_Datetime":"11/27/2013 11:00:49 PM",
"Leaves":0,
"Level":18,
"Losses":47,
"MasteryLevel":2,
"Name":"sergiotapia",
"Rank_Confidence":0,
"Rank_Stat":0,
"TeamId":121147,
"Team_Name":"sergiosteam",
"Wins":65,
"ret_msg":null}]
我的结构体定义如下:
type Player struct {
Created_datetime string
Last_login_datetime string
Leaves int
Level int
Losses int
Mastery_level int // 这个字段的值没有被更新。
Name string
Rank_confidence int
Rank_stat float32
Team_id int
Team_name string
Wins int
Ret_msg string
}
这是我的解组代码:
var players []Player // 使用数组是因为API返回的是一个JSON数组。
json.Unmarshal(httpResponse, &players)
return players[0]
结果是:
// fmt.Println(player)
{2/16/2013 2:57:59 AM 11/27/2013 11:00:49 PM 0 18 47 0 sergiotapia 0 0 0 sergiosteam 65 }
为什么我的结构体对象中MasteryLevel字段的值没有被更新?
Go Playground链接:http://play.golang.org/p/LPNiQDPx2E
英文:
I'm trying to unmarshal a JSON http response into a Struct I created.
JSON from the API endpoint:
[{"Created_Datetime":"2\/16\/2013 2:57:59 AM",
"Last_Login_Datetime":"11\/27\/2013 11:00:49 PM",
"Leaves":0,
"Level":18,
"Losses":47,
"MasteryLevel":2,
"Name":"sergiotapia",
"Rank_Confidence":0,
"Rank_Stat":0,
"TeamId":121147,
"Team_Name":"sergiosteam",
"Wins":65,
"ret_msg":null}]
And my struct:
type Player struct {
Created_datetime string
Last_login_datetime string
Leaves int
Level int
Losses int
Mastery_level int // This is the one that isn't being updated with the value.
Name string
Rank_confidence int
Rank_stat float32
Team_id int
Team_name string
Wins int
Ret_msg string
}
Here's how I'm unmarshaling:
var players []Player // Using an array because the API returns a JSON array - always.
json.Unmarshal(httpResponse, &players)
return players[0]
Resulting in:
// fmt.Println(player)
{2/16/2013 2:57:59 AM 11/27/2013 11:00:49 PM 0 18 47 0 sergiotapia 0 0 0 sergiosteam 65 }
Why is the value for MasterLevel not being updated in my struct object?
Go Playground here: http://play.golang.org/p/LPNiQDPx2E
答案1
得分: 2
Mastery_level
不等同于 MasteryLevel
,只需将它们命名为相同的名称即可正常工作。
Go Playground 在这里:http://play.golang.org/p/79GfdwS5Wy
英文:
Mastery_level
is not the same as MasteryLevel
, just name them the same and it works.
Go Playground here: http://play.golang.org/p/79GfdwS5Wy
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论