我很想解析的JSON非常基本,看起来像这样。
{"id": 3, "title":"Test"}
以下是我尝试用于创建和解析JSON的代码。
package main
import (
"fmt"
"encoding/json"
)
type Config struct{
id int
title string
}
func main() {
var jsonStr = []byte(`{"id": 3, "title":"Test"}`)
var conf Config
err := json.Unmarshal(jsonStr, &conf)
if err!=nil{
fmt.Print("Error:",err)
}
fmt.Println(conf)
fmt.Println(string(jsonStr))
}
一直在查看很多不同的代码示例,无法看到我做错了什么。当我试图运行它时,这就是我得到的回报。
{0 }
{"id": 3, "title":"Test"}
我已经验证JSON是有效的,但在尝试使用json.Unmarshal时继续获得空返回。关于我缺少什么的任何想法,以便我可以解析这个JSON?
编辑:如果我将标题大写(Id,标题),我觉得我可以使用它。不幸的是,我正在测试的返回是从API返回,它以小写形式返回所有内容。我需要能够使用上面列出的小写标题解析此JSON。答案 0 :(得分:3)
您的Config
结构字段需要导出(大写),但JSON对象中的键可能保持小写。
答案 1 :(得分:2)
请咨询JSON package documentation,值得一读。虽然Amit已经解决了导出问题,但我将解决以下问题:
编辑:如果我将标题大写(Id,标题),我觉得我可以使用它。不幸的是,我正在测试的返回是从API返回,它以小写形式返回所有内容。我需要能够使用上面列出的小写标题解析此JSON。
正如您可能想象的那样,encoding/json
的作者已经想到了这一点,所以我再次鼓励您下次查阅文档。解决方案就是这个(Example on playground):
type Config struct {
Id int `json:"id"`
Title string `json:"title"`
}