programing

json.Marshal(struct)이 "{}"을(를) 반환합니다.

mailnote 2023. 3. 27. 21:25
반응형

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 필드를 내보내야 합니다.바꾸다kind로.Kind기타 등등.

type TestObject struct {
 Kind string `json:"kind"`
 Id   string `json:"id,omitempty"`
 Name  string `json:"name"`
 Email string `json:"email"`
}

인코딩/json 패키지 및 유사한 패키지는 보고되지 않은 필드를 무시합니다.

`json:"..."`필드 선언 뒤에 오는 문자열은 구조 태그입니다.이 구조체의 태그는 JSON으로 또는 JSON에서 마샬링할 때 구조체의 필드 이름을 설정합니다.

운동장에서 해.

  • 첫 번째 문자가 대문자로 표시되면 ID는 사용하는 모든 코드에 공개됩니다.
  • 첫 번째 문자가 소문자인 경우 식별자는 비공개이며 선언된 패키지 내에서만 액세스할 수 있습니다.

 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
 }

인골랑

구조체의 첫 번째 문자는 대문자로 해야 합니다.예: phonenumber -> Phone Number

======= 상세 추가

일단 이렇게 코딩을 해보겠습니다.

type Questions struct {
    id           string
    questionDesc string
    questionID   string
    ans          string
    choices      struct {
        choice1 string
        choice2 string
        choice3 string
        choice4 string
    }
}

golang 컴파일은 오류가 아니며 경고를 표시하지 않습니다.하지만 응답은 공허합니다.

그 후 구글에서 이 기사를 검색해 보았다.

Structure Types and Structure Type Literals 기사...코드 편집을 시도합니다.

//Questions map field name like database
type Questions struct {
    ID           string
    QuestionDesc string
    QuestionID   string
    Ans          string
    Choices      struct {
        Choice1 string
        Choice2 string
        Choice3 string
        Choice4 string
    }
}

일이요.

도움을 바라다.

언급URL : https://stackoverflow.com/questions/26327391/json-marshalstruct-returns

반응형