登录
首页 >  Golang >  Go问答

使用 JSON 和 Golang 表示多种类型的事物

来源:stackoverflow

时间:2024-03-22 17:42:32 450浏览 收藏

在 Go 语言中,使用 JSON 表示包含不同类型数据的列表时,由于缺乏结构类型多态性,反序列化可能存在挑战。本文探讨了如何使用接口和保留关键字创建结构来表示此类数据,允许将不同类型的值存储在同一个字段中,从而实现反序列化。

问题内容

我试图用 json 表示一些数据,其中有一个事物列表,其中每个事物都有一些共同的特征(例如名称),另一个字段的值可以是字符串或整数。例如:

{
    "items": [
        {
            "name": "thing1",
            "type": "string",
            "value": "foo"
        },
        {
            "name": "thing2",
            "type": "int",
            "value": 42
        }
    ]
}

这个 json 对我来说看起来很合理,但尝试创建一个数据结构来将其反序列化(解组)到 golang 中被证明是困难的。我认为我可以在 java 中通过类多态性来做到这一点,但在 go 中我感觉被困住了。我已经尝试了很多东西但还没有得到它。最终,这归结为缺乏结构类型多态性。

在 go 中,我可以拥有一个接口切片(列表),但据我所知,我需要不同类型的实际结构。

关于如何在 golang 中表示这一点并能够解组有什么建议吗?

或者,我应该以不同的方式构建 json 本身吗?

谢谢!


正确答案


您可以创建这样的结构

type items struct {
    name   string
    type_1 string
    value  interface{}
}

接口可以容纳任何数据类型,因为 type 是我使用的 type_1 的保留关键字

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

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