在这个故事中,我想分享我在编组 Json 结构时使用 Go 的经验之一。
package mainimport (
"encoding/json"
"log"
)type car struct {
name string `json:"name"`
color string `json:"color"`
seats int `json:"seats"`
}func main() {
c := car{name: "toyota", color: "white", seats: 5}
byteArray, err := json.Marshal(c)
if err != nil {
log.Println(err)
}log.Println(string(byteArray))}
在上面的代码片段中,我们使用了一个名为 car 的结构类型。 在这里,我们尝试对结构进行编组并从 Marshal 函数打印输出 byteArray 的字符串类型。 通过这样做,我们可以确认我们检索到的数据与我们尝试编组的数据相同。
当我们运行这个程序时,我们看到的结果不是我们试图编组的结果。
输出: {}
这是因为我们传递给 Marshal 函数的结构字段是未导出的。 Marshal 函数无法访问导致上述输出的未导出字段。
现在这一次我们可以尝试通过导出结构中的一些字段,如下所示
package mainimport (
"encoding/json"
"log"
)type car struct {
Name string `json:"name"`
Color string `json:"color"`
seats int `json:"seats"`
}func main() {
c := car{Name: "toyota", Color: "white", seats: 5}
byteArray, err := json.Marshal(c)
if err != nil {
log.Println(err)
}log.Println(string(byteArray))}
在上面的代码片段中,我们导出了 Name 和 Color 字段,这导致了以下输出
输出:{“name”:”toyota”,”color”:”white”}
我们可以从上面的输出中观察到,只有导出的字段才能被 Marshalling 函数访问。
因此,我们需要确保我们传递给 Marshal 函数的字段应该被导出,如果不是那些外部包无法访问的字段。
感谢您的阅读! 如果您喜欢这个,请关注并订阅我的个人资料以获取更多故事
关注七爪网,获取更多APP/小程序/网站源码资源!
,