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

如何在Golang中将动态JSON转换为指定分隔格式的TXT文件

Go语言JSON转自定义分隔符格式TXT实现方案

首先需保证输入的JSON为标准合法格式(键与字符串值需用双引号包裹),示例标准输入如下:

{"name": "luis", "last name": "gomez", "id_number": 87846516}

实现核心逻辑为:先将JSON反序列化转为Go可操作的数据结构,提取所有字段值后按|拼接,再写入文件。以下分两种场景提供实现:


场景1:JSON字段固定可预知

优先使用结构体绑定的方案,字段输出顺序完全可控,性能更高:

package main

import (
	"encoding/json"
	"fmt"
	"os"
)

// 定义与JSON字段对应的结构体,标签匹配JSON键名
type User struct {
	Name     string `json:"name"`
	LastName string `json:"last name"`
	IdNumber int    `json:"id_number"`
}

func main() {
	// 你的原始JSON字节数据
	jsonData := []byte(`{"name": "luis", "last name": "gomez", "id_number": 87846516}`)
	
	// 1. 反序列化JSON到结构体
	var user User
	err := json.Unmarshal(jsonData, &user)
	if err != nil {
		panic(err)
	}
	
	// 2. 按要求拼接字段值
	outputStr := fmt.Sprintf("%s | %s | %d", user.Name, user.LastName, user.IdNumber)
	
	// 3. 写入TXT文件,Go 1.16+推荐使用os.WriteFile替代废弃的ioutil.WriteFile
	err = os.WriteFile("test.txt", []byte(outputStr), 0644)
	if err != nil {
		panic(err)
	}
}

场景2:JSON结构完全动态(字段不固定)

如果无法提前确定JSON字段,可反序列化为map[string]interface{}做通用处理:

注意:Go语言中map的遍历顺序是无序的,如果需要输出顺序和JSON原始字段顺序一致,需额外使用第三方有序JSON解析库,或提前指定字段提取顺序。

package main

import (
	"encoding/json"
	"fmt"
	"os"
	"strings"
)

func main() {
	// 你的原始JSON字节数据
	jsonData := []byte(`{"name": "luis", "last name": "gomez", "id_number": 87846516}`)
	
	// 1. 反序列化到通用map结构
	var dataMap map[string]interface{}
	err := json.Unmarshal(jsonData, &dataMap)
	if err != nil {
		panic(err)
	}
	
	// 2. 提取所有值并转成字符串
	var valueStrs []string
	for _, v := range dataMap {
		valueStrs = append(valueStrs, fmt.Sprintf("%v", v))
	}
	
	// 3. 用 | 拼接所有值
	outputStr := strings.Join(valueStrs, " | ")
	
	// 4. 写入文件
	err = os.WriteFile("test.txt", []byte(outputStr), 0644)
	if err != nil {
		panic(err)
	}
}

如果需要固定输出顺序,可提前定义字段顺序切片,按切片顺序取值即可,示例如下:

// 按你需要的输出顺序定义JSON键名
fieldOrder := []string{"name", "last name", "id_number"}
var valueStrs []string
for _, field := range fieldOrder {
	if v, ok := dataMap[field]; ok {
		valueStrs = append(valueStrs, fmt.Sprintf("%v", v))
	}
}

内容的提问来源于stack exchange,提问作者Luis Enrique Gómez Pérez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:15:03