登录
首页 >  Golang >  Go问答

如何将两个键映射到 JSON 结构中的单个成员。 (与元帅/元帅)

来源:stackoverflow

时间:2024-04-03 16:21:27 375浏览 收藏

今天golang学习网给大家带来了《如何将两个键映射到 JSON 结构中的单个成员。 (与元帅/元帅)》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

我的 api 在 windows 上返回 []byte {"name":"windows"},在 windows 上返回 {"myname":"linux"} linux,两者都报告操作系统名称,但密钥(名称/myname)根据操作系统而更改。如何将其封送/解封为 json 结构。我有一个可以保存操作系统名称的 ember。

type OsName struct {    
    Name   string `json:"name"` //I want to map Myname as well to this member.
}

注意:上面的问题不是关于如何获取操作系统名称,而是关于如何将 2 个不同的键映射到单个 json 成员。


正确答案


可能不是最好的解决方案,但您可以编写一个适配器,将基类中的结构类型转换为操作系统:

type OsName struct {
    Name string `json:"name"`
}

type LinuxOsName struct {
    Name string `json:"myName"`
}

func adapt(o OsName) interface{} {
    if o.Name == "Linux" {
        l := LinuxOsName(o)
        return &l
    }
    return &o
}

func print(o OsName) {
    b, err := json.Marshal(adapt(o))
    if err != nil {
        fmt.Printf("Error: %s\n", err)
    }
    fmt.Println(string(b))
}

https://go.dev/play/p/_M1orrGIP9p.go

以上就是《如何将两个键映射到 JSON 结构中的单个成员。 (与元帅/元帅)》的详细内容,更多关于的资料请关注golang学习网公众号!

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