登录
首页 >  Golang >  Go问答

初始化外部库结构时解析的 JSON 数据会导致类型错误

来源:stackoverflow

时间:2024-03-11 12:24:28 102浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《初始化外部库结构时解析的 JSON 数据会导致类型错误》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我有一个结构,它是从 json http post 请求解码的。 我拥有这个结构的目的是: - 简化来自客户端的 json 请求 - 在另一个(外部库)结构中使用结构属性数据。

如果我只能使用外部库结构,客户端 json 设置会看起来很混乱。 如何在另一个结构(尤其是它们的数组)中使用我的结构值?

我对一些简单类型的值有一个可行的解决方案。

考虑以下因素: 外部库结构:

type extstruct struct {
    from             *email             
    subject          string             
    personalizations []*personalization
 }

我的lib结构:

type mystruct struct {
         from            *email             
         subject          string             
         personalizations []*personalization
     }

这是我的代码:

mystruct := &mystruct{}
err := json.newdecoder(body).decode(mystruct)
extstruct := &extstruct{
    subject: mystruct.subject,
    from:    (*extstruct.email)(mystruct.from),
    personalizations: []*extstruct.personalization{
        to: ([]*extstruct.email)(mystruct.to),
    }}

subjectand from 值有效,但在尝试引用数组值时出现错误。 我不明白我错在哪里。 afaik 没有其他选项可以“简化”来自客户端的输入 json,只能引用另一个更大的结构中的值。 如果需要,我可以包含其他引用的结构,但将其视为:

type A struct {
    RefB []*B
}

type B struct {
    RefC []*C
    Value string
}
type C struct {
    Value string
}

我需要我的结构来引用 c。


解决方案


也许我误解了,但我认为 extstruct 初始化看起来更像

extStruct := &ExtStruct{
    From:             myStruct.From,
    Personalizations: myStruct.Personalizations,
}

https://play.golang.org/p/lqFFBa7SKGg

如果 emailpersonalization 是不兼容的类型,您应该直接编组到 extstruct,或者自己在类型之间进行编组。

我认为你应该澄清你的答案,也许提供一个有效(但错误)的例子。

以上就是《初始化外部库结构时解析的 JSON 数据会导致类型错误》的详细内容,更多关于的资料请关注golang学习网公众号!

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