【发布时间】:2017-09-06 18:20:17
【问题描述】:
在我的 json 数据结构中,我有一个可以有前缀的字符串。解组 JSON 时,是否有可能具有删除该前缀的功能?我正在研究 golang 中的自定义 JSON 解组并尝试利用它。
例如。有效载荷可以是以下任一种
{
"id": "urn:uuid:1234567890"
}
{
"id": "1234567890"
}
当我执行 JSON.unmarshall(data, &struct) 时,我希望 unmarshall 函数处理从字符串中删除 urn:uuid 前缀(如果存在),因此结构将始终具有 1234567890 的值 id。
【问题讨论】:
-
您可以通过使
struct的id字段具有自定义类型并让该类型实现json.Unmarshaler接口来做到这一点。只需确保id字段已实际导出,否则将无法解码。 -
后处理。如果您不提供自己的解组器(太多),则在解组期间基本上可以撤消。
-
如果您正在考虑自定义解组,您一定已经知道这是可能的,所以...您的问题到底是什么?
-
我在实际实现自定义解组时遇到了一些问题。我试图在整个结构本身上做到这一点。但正如@mkopriva 提到的,它应该在 id 字段本身上完成。
-
@Sakib 类似 play.golang.org/p/J6iadpsTgO
标签: go unmarshalling