英文:
Why is json.Marshal seemingly producing an array of ints?
问题
我正在尝试理解Go语言,并在这个简单的示例中遇到了第一个障碍:
package main
import (
"encoding/json"
"fmt"
)
type MyStructure struct {
Integer int `json:"integer"`
Label string `json:"label"`
}
func main() {
ms := &MyStructure{9001, "over9000"}
msjson, _ := json.Marshal(ms)
fmt.Println(msjson) // 期望输出: {"integer": 9001, "label": "over9000"}
}
我的输出结果是:[123 34 105 110 116 101 103 101 114 34 58 57 48 48 49 44 34 108 97 98 101 108 34 58 34 111 118 101 114 57 48 48 48 34 125]
显然,我漏掉了一些明显的东西;请问有人可以指点我正确的方向吗?
英文:
I'm trying to wrap my head around the Go language and I've hit my first stumbling block with this simple example:
package main
import (
"encoding/json"
"fmt"
)
type MyStructure struct {
Integer int `json:"integer"`
Label string `json:"label"`
}
func main() {
ms := &MyStructure{9001, "over9000"}
msjson, _ := json.Marshal(ms)
fmt.Println(msjson) // expect: {"integer": 9001, "label": "over9000"}
}
My output is as follows: [123 34 105 110 116 101 103 101 114 34 58 57 48 48 49 44 34 108 97 98 101 108 34 58 34 111 118 101 114 57 48 48 48 34 125]
I'm clearly missing something obvious; could someone please point me in the right direction?
答案1
得分: 12
它生成一个字节切片(参考:http://golang.org/pkg/encoding/json/#Marshal),使用string(msjson)
来获取字符串。
此外,永远不要忽略错误,它会在你最不希望的时候反咬一口。
fmt.Println(string(msjson))
// 或者
fmt.Printf("%s\n", msjson) // 去掉了 @dustin 的评论
英文:
It produces a byte slice (ref : http://golang.org/pkg/encoding/json/#Marshal), use string(msjson)
to get the string.
Also never ignore errors, it bites you back whenever you least expect it.
fmt.Println(string(msjson))
// or
fmt.Printf("%s\n", msjson) //shamelessly taken from @dustin's comment
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论