为什么我无法用golang解码这个JSON?它总是打印一个空字符串

时间:2016-04-22 20:14:55

标签: json go

我的服务器上有一个非常简单的JSON文件,只是

{
    "first_name": "John",
    "last_name": "Doe"
}

然后我写了一个golang脚本来打印出第一个名字:

package main

import (
    "fmt"
    "net/http"
    "encoding/json"
)       

type Person struct {
    FirstName string `json: "first_name"`
    LastName string `json: "last_name"`
}

func main() {
    url := "http://myserver.com/test.json"

    res, err := http.Get(url)

    if err != nil {
        fmt.Printf("%s", err)
    }

    defer res.Body.Close()

    var person Person
    dec := json.NewDecoder(res.Body).Decode(&person)

    if dec != nil {
        fmt.Printf("%s", dec)
    }

    fmt.Println(person.FirstName)
}

但如果我输入go run test.go,它总是只是打印一个换行符。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的代码正在json中搜索FirstNameLastName个键。如果希望struct标记生效,则需要删除冒号和引号之间的空格。 json:"first_name"

https://golang.org/pkg/reflect/#StructTag