또한 Json 데이터가 구조체에 정의되지 않은 부분을 얻기를 원합니다 Go

6646 단어 Gotech
json에서 데이터를 되돌릴 때 필드에 동적으로 추가합니다. 어떻게 하는지 조사했기 때문에 기록했습니다.
예컨대
type Struct struct {
   Value_first  string `json:"value"`
   Value_second string `json:"value_one"`
   Nest         Nested `json:"nest"`
}
이것이 바로 제이슨이다.Marshal도 정의 이외에는 답장을 세 개 이상 주지 않을 거예요.
다른 것을 추가하고 싶을 때, 예를 하나 들어라.
import 	"encoding/json"

type FakeStruct struct
func (s Struct) MarshalJSON() ([]byte, error) {
    return json.Marshal(struct {
    FakeStruct
        AddData map[string]string `json:"add_data"`
    }{
        FakeStruct: FakeItem(s),
        AddData: map[string]string{"something": "something"},
    })
}

그렇다면 AddData 섹션을 추가하고 싶습니다.
out, err := json.MarshalIndent(struct, "", "  ")
    if err != nil {
        log.Fatalln(err)
    }
    fmt.Println(string(out))
함수에 struct를 직접 정의하는 다른 방법도 있는 것 같아요.
    func (s Struct) MarshalJSON() ([]byte, error) {
        return struct {
            FakeStruct
            NewStruct struct {
                AddData string `json:"add_data"`
            } `json:"new_struct"`
        }{
            FakeStruct: FakeStruct(*s),
            NewStruct: struct {
                AddData string `json:"add_data"`
            }{
                AddData: "yes!",
            },
        }
    })
저는 Stack overflow를 참고했지만 5년 전 이상의 상황에 신경을 많이 썼습니다.

좋은 웹페이지 즐겨찾기