You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:29:26