go - 如何构建复杂的 Go 数据结构
问题描述
我有以下数据结构来构建和发送数据。然后将其转换为json并写入文件。我需要一个数组。它的元素是一张地图。map["targets"]
value 是一个数组,map["labels"]
是另一个映射。如何构建复杂的数据结构?
[
{
"targets": ["10.11.150.1:7870", "10.11.150.4:7870"],
"labels": {
"job": "mysql"
}
},
{
"targets": ["10.11.122.11:6001", "10.11.122.15:6002"],
"labels": {
"job": "postgres"
}
}
]
~
解决方案
所以你的结构看起来像这样:
type Obj struct {
Targets []string `json:"targets"`
Labels map[string]string `json:"labels"`
}
填充它:
obj := []Obj{
Obj{
Targets: []string{"10.11.150.1:7870", "10.11.150.4:7870"},
Labels: map[string]string{
"job": "mysql",
},
},
Obj{
Targets: []string{"10.11.122.11:6001", "10.11.122.15:6002"},
Labels: map[string]string{
"job": "postgres",
},
},
}
将其编组为字符串:
jsonBytes, err := json.Marshal(obj)
if err != nil {
log.Fatal("error marshaling struct to JSON:", err)
}
将其写入文件:
if err := ioutil.WriteFile("output.json", jsonBytes, 0644); err != nil {
log.Fatal("error writing file:", err)
}
这是所有内容:
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
)
type obj struct {
Targets []string `json:"targets"`
Labels map[string]string `json:"labels"`
}
func main() {
obj := []obj{
obj{
Targets: []string{"10.11.150.1:7870", "10.11.150.4:7870"},
Labels: map[string]string{
"job": "mysql",
},
},
obj{
Targets: []string{"10.11.122.11:6001", "10.11.122.15:6002"},
Labels: map[string]string{
"job": "postgres",
},
},
}
jsonBytes, err := json.Marshal(obj)
if err != nil {
log.Fatal("error marshaling struct to JSON:", err)
}
if err := ioutil.WriteFile("output.json", jsonBytes, 0644); err != nil {
log.Fatal("error writing file:", err)
}
fmt.Printf("%+v\n", jsonBytes)
}
推荐阅读
- php - 在 PHP 中的 if 语句中使用 for 循环
- asp.net - 如何从sql数据库中选择不在table1中的数据需要从table2中选择+asp.net vb
- elasticsearch - elasticsearch查询嵌套和通配符
- java - 年终日期 (java.util.Date) 转换为字符串作为错误日期
- scala - 在 spark scala 中处理十进制值
- rabbitmq - nova 服务间歇性地无法连接到 rabbitmq 并出现超时错误
- android - 验证只允许搜索视图中的数字和字符进行搜索
- python - 通过 gensim 向 GoogleNews 添加新词
- c# - 如何使用 HTTP 客户端调用 Windows Authenticated API
- ios - 如何在方向更改期间保留 MKMapView 的缩放级别和可见区域?