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 本质上是空的?


翻阅古今
浏览 187回答 3
3回答

千巷猫影

当第一个字母大写时,标识符对您要使用的任何代码段都是公开的。当第一个字母是小写时,标识符是私有的,只能在它声明的包内访问。例子 var aName // private var BigBro // public (exported) var 123abc // illegal func (p *Person) SetEmail(email string) {  // public because SetEmail() function starts with upper case    p.email = email } func (p Person) email() string { // private because email() function starts with lower case    return p.email }

慕莱坞森

在 golang在 struct 中的第一个字母必须大写,例如。电话号码 -> 电话号码====== 添加细节首先,我尝试这样编码type Questions struct {    id           string    questionDesc string    questionID   string    ans          string    choices      struct {        choice1 string        choice2 string        choice3 string        choice4 string    }}golang compile 不是错误并且不显示警告。但响应是空的,因为某事之后,我搜索谷歌找到了这篇文章结构类型和结构类型文字 文章然后...我尝试编辑代码。//Questions map field name like databasetype Questions struct {    ID           string    QuestionDesc string    QuestionID   string    Ans          string    Choices      struct {        Choice1 string        Choice2 string        Choice3 string        Choice4 string    }}是工作。希望得到帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go