在json.Unmarshal之后接收零初始化对象

时间:2014-06-26 15:54:45

标签: json go unmarshalling

我似乎无法在Go中解析json文件。我尝试了很多教程,但我看不出自己做错了什么。 JSON看起来像这样。

{
    "latitude": 34.4048358,
    "longitude": -119.5313565,
    "dateTime": "Thu Jun 26 2014 08:36:42 GMT-0700 (PDT)"
}

我的主文件看起来像这样。

package main

import (
    "encoding/json"
    "fmt"
)

type Position struct {
    latitude  float64 `json:latitude`
    longitude float64 `json:logitude`
    dateTime  string  `json:dateTime`
}

func jsonToPosition(jsonData []byte) {
    position := &Position{}

    if err := json.Unmarshal(jsonData, position); err != nil {
        fmt.Println(err)
    }

    fmt.Println(position)
}

func main() {
    jsonToPosition([]byte(`{"latitude":34.4048358,"longitude":-119.5313565,"dateTime":"Thu Jun 26 2014 08:36:42 GMT-0700 (PDT)"}`))
}

我没有收到错误或其他任何错误。我在&{0 0 }时获得fmt.Println(position)

1 个答案:

答案 0 :(得分:3)

这是一个常见的错误:您没有导出Position结构中的值,因此json包无法使用它。使用变量名中的大写字母来执行此操作:

type Position struct {
    Latitude  float64 `json:latitude`
    Longitude float64 `json:logitude`
    DateTime  string  `json:dateTime`
}