在Go语言中处理文本文件并生成含数组的JSON结构的咨询
实现Go语言生成指定格式的JSON记录
我来帮你完善这段代码,轻松生成你想要的JSON格式。首先我们需要定义对应的数据结构体,让Go能正确映射到目标JSON结构,再构造数据并完成序列化输出。
完整可运行代码示例
package main import ( "encoding/json" "fmt" "log" ) // Person 统一描述船员和乘客的基础结构 type Person struct { Name string `json:"name"` } // Ship 定义单条船只的完整数据结构 type Ship struct { ShipName string `json:"ship"` Crew []Person `json:"crew"` Passengers []Person `json:"passengers"` } func main() { // 构造你需要的船只数据集 ships := []Ship{ { ShipName: "RMS Titanic", Crew: []Person{ {Name: "Captain Smith"}, {Name: "First Officer Murdoch"}, }, Passengers: []Person{ {Name: "Jack Dawson"}, {Name: "Rose Dewitt Bukater"}, }, }, { ShipName: "ship2", Crew: []Person{ {Name: "crew 1"}, {Name: "crew 2"}, }, Passengers: []Person{ {Name: "passenger 1"}, {Name: "passenger 2"}, }, }, } // 序列化JSON,用MarshalIndent生成带缩进的易读格式 jsonData, err := json.MarshalIndent(ships, "", " ") if err != nil { log.Fatalf("JSON序列化失败: %v", err) } // 输出最终结果 fmt.Println(string(jsonData)) }
关键细节说明
- 结构体JSON标签:结构体字段后的
json:"xxx"是核心,它指定了Go字段在JSON中对应的键名(比如ShipName对应JSON里的ship),确保输出格式完全匹配你的需求。 - 切片对应JSON数组:
Crew和Passengers都用[]Person切片类型,完美对应JSON中的数组结构。 - 错误处理:序列化时可能出现格式错误,所以一定要捕获并处理
err,避免程序意外崩溃;用MarshalIndent替代基础的Marshal,能生成更美观的缩进格式,方便调试查看。
运行这段代码,就能得到和你预期完全一致的JSON输出啦~
内容的提问来源于stack exchange,提问作者tjoe
相关产品推荐
相关产品推荐

