根据类型解组时的空字段
Empty fields while unmarshalling depending on type
我有以下结构:
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,但我也设法在职位中填写了标题,但没有填写描述:
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])
}
我对需要更多格式的日期并不感到惊讶,但我没有发现字符串字段的不一致。我已经在 playground 里设置了代码,大家可以自己测试一下here.
唯一真正的问题是您忽略了 json.Unmrshal
返回的错误。因为您遇到错误,所以您不能真正依赖 &company
- 一旦 运行 进入无效日期字段,它基本上就放弃了,否则 Description
就可以了:
我有以下结构:
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,但我也设法在职位中填写了标题,但没有填写描述:
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])
}
我对需要更多格式的日期并不感到惊讶,但我没有发现字符串字段的不一致。我已经在 playground 里设置了代码,大家可以自己测试一下here.
唯一真正的问题是您忽略了 json.Unmrshal
返回的错误。因为您遇到错误,所以您不能真正依赖 &company
- 一旦 运行 进入无效日期字段,它基本上就放弃了,否则 Description
就可以了: