Golang解析JSON返回0

时间:2014-11-02 19:35:13

标签: json go

我很想解析的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。

2 个答案:

答案 0 :(得分:3)

您的Config结构字段需要导出(大写),但JSON对象中的键可能保持小写。

见这里:http://play.golang.org/p/0A5tkCkSO5

答案 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"`
}
相关问题