json.Marshal(struct)返回“ {}”

type TestObject struct {

kind string `json:"kind"`

id string `json:"id, omitempty"`

name string `json:"name"`

email string `json:"email"`

}

func TestCreateSingleItemResponse(t *testing.T) {

testObject := new(TestObject)

testObject.kind = "TestObject"

testObject.id = "f73h5jf8"

testObject.name = "Yuri Gagarin"

testObject.email = "Yuri.Gagarin@Vostok.com"

fmt.Println(testObject)

b, err := json.Marshal(testObject)

if err != nil {

fmt.Println(err)

}

fmt.Println(string(b[:]))

}

这是输出:

[ `go test -test.run="^TestCreateSingleItemResponse$"` | done: 2.195666095s ]

{TestObject f73h5jf8 Yuri Gagarin Yuri.Gagarin@Vostok.com}

{}

PASS

为什么JSON本质上是空的?

回答:

您需要通过大写字段名称中的第一个字母来导出

TestObject中的字段。更改kindKind,依此类推。

type TestObject struct {

Kind string `json:"kind"`

Id string `json:"id,omitempty"`

Name string `json:"name"`

Email string `json:"email"`

}

encoding / json包和类似的包会忽略未导出的字段。

json:"..."字段声明之后的字符串是struct标签。在与JSON封送时,此struct中的标记设置该结构的字段名称。

[playground](https://play.golang.org/p/n19J5XhiGIL)

以上是 json.Marshal(struct)返回“ {}” 的全部内容, 来源链接: utcz.com/qa/398401.html

回到顶部