英文:
Receiving zero-initialized object after json.Unmarshal
问题
我似乎无法在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:"longitude"`
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 }
。
英文:
I can't seem to be able to parse a json file in Go. I've tried a bunch of tutorials, but I can't see what I'm doing wrong. The JSON looks like this.
{
"latitude": 34.4048358,
"longitude": -119.5313565,
"dateTime": "Thu Jun 26 2014 08:36:42 GMT-0700 (PDT)"
}
And my main file looks like this.
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)"}`))
}
I don't get an error or anything. I just get &{0 0 }
when I do fmt.Println(position)
.
答案1
得分: 3
这是一个常见的错误:你没有在Position
结构体中导出数值,所以json
包无法使用它。使用大写字母来命名变量以解决这个问题:
type Position struct {
Latitude float64 `json:"latitude"`
Longitude float64 `json:"longitude"`
DateTime string `json:"dateTime"`
}
英文:
This is a common mistake: you did not export values in the Position
structure, so the json
package was not able to use it. Use a capital letter in the variable name to do so:
type Position struct {
Latitude float64 `json:latitude`
Longitude float64 `json:logitude`
DateTime string `json:dateTime`
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论