json.Marshal(struct) 返回“{}”
技术问答
196 人阅读
|
0 人回复
|
2023-09-12
|
err := json.Marshal(testObject) if err != nil fmt.Println(err) } fmt.Println(string(b[]code]err := json.Marshal(testObject) if err != nil { fmt.Println(err) } fmt.Println(string(b[:]))}[/code]这是输出:# ?; B8 N5 R2 i0 g+ r
[ `go test -test.run="^TestCreateSingleItemResponse$"` | done: 2.195666095s {TestObject f73h5jf8 Yuri Gagarin Yuri.Gagarin@Vostok.com} PASS
2 Z) M; }5 i# I5 m3 m* n9 V4 m+ `9 \0 W 为什么 JSON 本质上是空的?4 D7 @" g: I# g, z% `! H0 Y
! \7 |- a( ]% y/ Q/ I& P 解决方案: ; E7 E$ a: Y% k# l$ P
您需要导出字段名称中的第一个字母TestObject 中的字段kind为Kind等等。
6 d% F4 W% ]$ ] ]2 }9 g, S# wtype TestObject struct { Kind string `json:"kind"` Id string `json:"id,omitempty"` Name string `json:"name"` Email string `json:"email"`}+ R3 ]& c$ h7 P0 v+ V
encoding/json 包和类似的包会忽略未导出的字段。
) d! \- g: R( n. cjson:"..."字段声明后面的字符串是struct tags。在与 JSON 封装时,结构字段的名称设置在结构中。 |
|
|
|
|
|