2014-06-26 63 views
2

我似乎無法解析Go中的json文件。我已經嘗試了一堆教程,但是我看不到我做錯了什麼。 JSON看起來像這樣。在json.Unmarshal之後接收零初始化對象

{ 
    "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)"}`)) 
} 

我沒有收到任何錯誤或任何錯誤。當我做fmt.Println(position)時,我只得到&{0 0 }

+0

[鑄造界面{}以JSON編碼結構(可能重複http://stackoverflow.com/questions/24409665/casting-interface-to -struct-in-json-encoding) – OneOfOne

回答

3

這是一個常見的錯誤:您沒有導出Position結構中的值,因此json程序包無法使用它。使用大寫字母的變量名可以這樣做:

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

對於同一問題,我給出了相同的答案yersterday:http://stackoverflow.com/questions/24409665/casting-interface-to-struct-in-json-encoding/24409726#24409726 – julienc