
php小编百草为你带来了一篇关于解析golang中的JSON数组的文章。在golang中,我们可以使用自定义类型来解析复杂的JSON数组。这种方法不仅能够更好地理解和处理JSON数据,还能提供更灵活的操作方式。本文将详细介绍如何使用自定义类型解析JSON数组,并给出一些实用的示例代码,帮助你更好地理解和运用这一技巧。无论你是初学者还是有一定经验的开发者,都能从本文中受益匪浅,快来一起探索吧!
我正在尝试在 golang 中解析一个 json 数组,格式如下:
2牛肉840f8f9d8bb724c7736cb14989例如,json 应该包含不同表的模式。 我已尝试以下代码,但架构返回空:
package main
import (
"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,您可以使用以下类型:
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
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 数组的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号