我有一个Profile{}
结构,其ID
属性类型为uuid.UUID
。当我整理此内容时,我正在将UUID
转换为string
,如下所示:
type Profile struct {
Id uuid.UUID
}
func (profile *Profile) MarshalJSON() ([]byte, error) {
type Alias Profile
return json.Marshal(&struct {
Id string
*Alias
}{
Id: profile.Id.String(),
Alias: (*Alias)(profile),
})
}
但是,当我想要解组这个JSON时,它会抱怨id
是一个字符串。因此,我需要在解组时初始化UUID
结构,如下所示:uuid.New([]byte(jsonId))
这是否可以在不改变UUID
实施的情况下进行,如果是,怎么做?
答案 0 :(得分:0)
我建议将Id
存储为字符串而不是uuid.UUID
。当然有一些解决方法,但是如果你不打算在内存中保存数千Profile
个,你就不应该注意到任何差异,并且你可以节省处理序列化的时间的问题。
如果您不想要,请查看您正在使用的uuid
个套餐。 UUID
的基础类型是否真的是一个字符串?如果它是其他内容,例如[]byte
,则只需在解组之前将字符串转换为[]byte
。
惯用的解决方法将是Not_a_Golfer根据您的问题发表的评论。