为什么在尝试编组匿名结构时会得到{}
?
package main
import (
"encoding/json"
"fmt"
"os"
)
func main() {
js, err := json.Marshal(struct{id int}{123})
if err != nil {
fmt.Println("error:", err)
}
os.Stdout.Write(js)
}
答案 0 :(得分:4)
https://play.golang.org/p/XNAKovWGhxk
package main
import (
"encoding/json"
"fmt"
"os"
)
func main() {
jsonString, err := json.Marshal(
struct{
Id int `json:"theKeyYouWantToUse"`
} {
123
},
)
if err != nil {
fmt.Println("error:", err)
}
os.Stdout.Write(jsonString)
}
您没有导出id属性,请将其更改为Id
答案 1 :(得分:3)
如果您使用以下结构,Marshal方法将忽略id
,因为它不会被导出。
struct{id int}{123}
您需要导出它们以使其保持转换过程。
在Go中,如果名称以大写字母
开头,则会导出该名称
js, _ := json.Marshal(struct{Id int}{123})
os.Stdout.Write(js)
// {"Id":123}