在 Go 中,将 JSON 值解组为自定义标量类型可能具有挑战性,因为无法修改 UnmarshalJSON 方法中的标量值。当为从标量派生的类型实现 UnmarshalJSON 时会出现此问题,从而阻止将 JSON 中的字符串自动转换为派生类型的值。
要解决此问题,请按照以下步骤操作:
以下是 PersonID 的 UnmarshalJSON 方法的正确实现:
func (intValue *PersonID) UnmarshalJSON(data []byte) error { var s string if err := json.Unmarshal(data, &s); err != nil { return err } *intValue = Lookup(s) return nil }
此外,请确保 MyType 结构中的 JSON 标记匹配示例 JSON 中的字段名称。如有必要,请更新 json: "person" 以匹配示例中使用的 JSON 标签。
按照以下步骤,您可以为派生标量类型实现 UnmarshalJSON,从而实现自动转换JSON 字符串转换为所需的值类型。这允许轻松地将 JSON 数据解析为自定义类型。
以上是如何将 JSON 字符串解组为自定义 Go 标量类型?的详细内容。更多信息请关注PHP中文网其他相关文章!