使用自定义类型解析 golang 中的 JSON 数组

使用自定义类型解析 golang 中的 json 数组

php小编百草为你带来了一篇关于解析golang中的JSON数组的文章。在golang中,我们可以使用自定义类型来解析复杂的JSON数组。这种方法不仅能够更好地理解和处理JSON数据,还能提供更灵活的操作方式。本文将详细介绍如何使用自定义类型解析JSON数组,并给出一些实用的示例代码,帮助你更好地理解和运用这一技巧。无论你是初学者还是有一定经验的开发者,都能从本文中受益匪浅,快来一起探索吧!

问题内容

我正在尝试在 golang 中解析一个 json 数组,格式如下:

2牛肉840f8f9d8bb724c7736cb14989

例如,json 应该包含不同表的模式。我已尝试以下代码,但架构返回空:

package mainimport (    "encoding/json"    "io"    "log"    "os")type ColumnType struct {    Name  string `json:"name"`    Type  string `json:"type"`}type Schema struct {    Schema map[string][]ColumnType}func main() {    mocksSchemas, _ := os.Open("parse_config/mock_schema.json")    var schemas []Schema    content, err := io.ReadAll(mocksSchemas)    if err != nil {        log.Fatal("Error when reading mock file: ", err)    }    err = json.Unmarshal(content, &schemas)    if err != nil {        log.Fatal("Error during Unmarshal(): ", err)    }    defer mocksSchemas.Close()}

登录后复制

我做错了什么?如果您能指出我的错误,我将不胜感激谢谢!

解决方法

要匹配源/目标 JSON,您可以使用以下类型:

type Schema map[string][]ColumnType

登录后复制

或者,您也可以使用更易于使用的东西:

立即学习“go语言免费学习笔记(深入)”;

type Schema struct {    Table   string    Columns []ColumnType}func (s Schema) MarshalJSON() ([]byte, error) {    return json.Marshal(map[string][]ColumnType{        s.Table: s.Columns,    })}func (s *Schema) UnmarshalJSON(data []byte) error {    var m map[string][]ColumnType    if err := json.Unmarshal(data, &m); err != nil {        return err    }    for k, v := range m {        s.Table = k        s.Columns = v        break    }    return nil}

登录后复制

以上就是使用自定义类型解析 golang 中的 JSON 数组的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2357729.html

(0)
上一篇 2025年3月1日 16:36:14
下一篇 2025年3月1日 16:36:39

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论