根据类型解编时为空字段

问题描述

我具有以下结构:

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会很好:

https://play.golang.org/p/pxnIlmlPCq5