登录
首页 >  Golang >  Go问答

未序列化的 JSON 对象

来源:stackoverflow

时间:2024-03-09 22:18:25 186浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《未序列化的 JSON 对象》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我想使用未导出的自定义类型并定义一个接口来使用它。自定义类型将实现该接口,除了从 json 解组之外,一切正常。

我创建了一个示例来更好地解释它:

type (
    value interface {
        set(k, v string)
    }

    value map[string]string
)

func new() value {
    return value{}
}

func (val value) set(k, v string) {
    val[k] = v
}

此方法不会提供对地图的直接访问,并强制使用 new() 函数来创建“value”类型的对象。

当尝试在使用 new() 创建的对象中解组时,我收到错误:

failed to unmarshal value json: cannot unmarshal object into go value of type main.value

可以通过让 new() 返回“value”而不是“value”来解决这个问题,但在尝试解组对象时仍然会出现问题,例如:

Storage struct {
        Val Value `json:"val"`
}

有什么建议吗?在这种情况下,实施 unmarshaler 没有帮助。我用这个例子创建了一个 go 代码片段:https://play.golang.org/p/iealgbcstvr


解决方案


您需要为 json.unmarshal() 提供一个指向具体类型的指针。所以改变(从你链接的演示):

unm := new()

unm := New().(value)

以上就是《未序列化的 JSON 对象》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>