golang mapstructure가 비어 있는 문제로 바뀌었습니다.

2212 단어 go
//struct 
func (s *commentRedisStore) CommentMapToStruct(commentInfo *model.CommentInfo, mapValue map[string]string) error {
	if len(mapValue) == 0 {
		return errors.New("len(mapValue) == 0")
	}

	decoder, _ := mapstructure.NewDecoder(&mapstructure.DecoderConfig{
		WeaklyTypedInput: true,
		Result:           commentInfo,
	})
	_ = decoder.Decode(mapValue)

	// 
	if mapValue["createdAt"] != "" {
		timeStr := mapValue["createdAt"]
		commentInfo.CreatedAt, _ = time.Parse("2006-01-02T15:04:05Z07:00", timeStr)
	}
	if mapValue["updatedAt"] != "" {
		timeStr := mapValue["updatedAt"]
		commentInfo.UpdatedAt, _ = time.Parse("2006-01-02T15:04:05Z07:00", timeStr)
	}
	if mapValue["deletedAt"] != "" {
		timeStr := mapValue["deletedAt"]
		deletedAt, _ := time.Parse("2006-01-02T15:04:05Z07:00", timeStr)
		commentInfo.DeletedAt = &deletedAt
	} else {
		commentInfo.DeletedAt = nil
	}

	return nil
}
type CommentInfo struct {
	SN int64  `json:"sn"`
	ID string `gorm:"-" json:"id"` //  

	ArticleSN int64  `json:"articleSN"`
	ArticleID string `gorm:"-" json:"articleID"` //  

	UserID int `json:"userID"` //  id

	Content string `json:"content"` //  

	ReplyTo int `json:"replyTo"` //  id

	ParentSN int64  `json:"parentSN"`
	Parent string `gorm:"-" json:"parent"` //  sn( , )

	PlateSN int64  `json:"plateSN"`
	Plate string `gorm:"-" json:"plate"` //  

	CreatedAt time.Time  `json:"createdAt"` //  
	UpdatedAt time.Time  `json:"updatedAt"` //  
	DeletedAt *time.Time `json:"deletedAt"` //  

	VoteUp       int64 `json:"voteUp"`       //  
	VoteDown     int64 `json:"voteDown"`     //  
	RepliedTotal int64 `json:"repliedTotal"` //  

	Status       int64 `json:"status"`       //  ( 1, 2)
	ReviewStatus int64 `json:"reviewStatus"` //  ( 1, 2, 3)
}

Plate string `gorm: "-"json: "plate"//기사 소속 섹션
필드는 일치해야 합니다(대소문자는 상관없습니다). 그렇지 않으면 위의 방법이 돌릴 수 없습니다

좋은 웹페이지 즐겨찾기