问题描述
我具有以下结构:
type Company struct {
Id uuid.UUID `json:"id"`
Name string `json:"name"`
Presentation string `json:"presentation"`
Jobs []*Job `json:"jobs"`
}
type Job struct {
Id uuid.UUID `json:"id"`
Title string `json:"title"`
Description string `json:"description"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
当尝试解组应与该结构层次结构匹配的json字符串时,某些字段已填写,而其他字段未填写。主要是uuid,但我也设法在Jobs中填写了标题,但没有说明:
func main() {
s := `{"id": "2cc588a8-087a-4b81-a17f-3c9c35d2e958","jobs": [{"id": "e1498403-82d8-47a9-b744-96b00c8b91e6","title": "Qsd","created_at": "2020-09-07T22:52:22.376857","updated_at": "2020-09-07T22:52:22.376857","description": "<p>sd</p>\n"}],"name": "NC","presentation": "<p>qsdq</p>\n"}`
var company *Company
json.Unmarshal([]byte(s),&company)
log.Printf("%+v\n",company)
log.Printf("%+v\n",company.Jobs[0])
}
我对需要更多格式的日期并不感到惊讶,但是我没有在字符串字段上出现不一致之处。我已经在操场上设置了代码,因此每个人都可以here自己进行测试。
解决方法
唯一的实际问题是您忽略了json.Unmrshal
返回的错误。因为遇到错误,所以您不能真正依靠&company
-一旦遇到错误的日期字段,它基本上就放弃了,否则Description
会很好: