Golang中如何将JSON数据写入文件
Golang中如何将JSON数据写入文件 你好, 我正在从一个端点收集一些JSON数据。我可以将其打印到屏幕上:
fmt.Printf("%s\n", bodyText)
但我一直无法弄清楚如何将 bodyText 写入文件。
非常感谢任何帮助。
2 回复
如果你指的是不知道如何打开一个文件,我建议查阅 os.Create 或 os.OpenFile。如果你指的是如何将数据写入文件,我建议查阅 fmt.Fprintln。如果你指的是其他问题,能否详细说明一下你遇到的困难?
更多关于Golang中如何将JSON数据写入文件的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Golang中将JSON数据写入文件有多种方法。以下是几种常见的方式:
方法1:使用ioutil.WriteFile(Go 1.16+推荐使用os.WriteFile)
package main
import (
"fmt"
"os"
)
func main() {
// 假设bodyText是从端点获取的JSON数据
bodyText := `{"name":"John","age":30,"city":"New York"}`
// 将JSON数据写入文件
err := os.WriteFile("data.json", []byte(bodyText), 0644)
if err != nil {
fmt.Printf("写入文件失败: %v\n", err)
return
}
fmt.Println("JSON数据已成功写入data.json")
}
方法2:使用os.Create和WriteString
package main
import (
"fmt"
"os"
)
func main() {
bodyText := `{"name":"Alice","age":25,"city":"London"}`
// 创建文件
file, err := os.Create("output.json")
if err != nil {
fmt.Printf("创建文件失败: %v\n", err)
return
}
defer file.Close()
// 写入JSON数据
_, err = file.WriteString(bodyText)
if err != nil {
fmt.Printf("写入数据失败: %v\n", err)
return
}
fmt.Println("JSON数据已成功写入output.json")
}
方法3:使用bufio.Writer(适合大量数据)
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
bodyText := `{"users":[{"name":"Bob","age":35},{"name":"Charlie","age":28}]}`
file, err := os.Create("users.json")
if err != nil {
fmt.Printf("创建文件失败: %v\n", err)
return
}
defer file.Close()
writer := bufio.NewWriter(file)
_, err = writer.WriteString(bodyText)
if err != nil {
fmt.Printf("写入数据失败: %v\n", err)
return
}
// 确保所有数据都写入文件
writer.Flush()
fmt.Println("JSON数据已成功写入users.json")
}
方法4:如果bodyText是[]byte类型
package main
import (
"fmt"
"os"
)
func main() {
// 假设bodyText是[]byte类型
bodyText := []byte(`{"product":"Laptop","price":999.99,"inStock":true}`)
err := os.WriteFile("product.json", bodyText, 0644)
if err != nil {
fmt.Printf("写入文件失败: %v\n", err)
return
}
fmt.Println("JSON数据已成功写入product.json")
}
方法5:格式化JSON后写入
package main
import (
"encoding/json"
"fmt"
"os"
)
func main() {
// 原始JSON字符串
bodyText := `{"name":"David","age":40,"city":"Tokyo"}`
// 解析并格式化JSON
var data map[string]interface{}
json.Unmarshal([]byte(bodyText), &data)
// 格式化JSON
formattedJSON, err := json.MarshalIndent(data, "", " ")
if err != nil {
fmt.Printf("格式化JSON失败: %v\n", err)
return
}
// 写入格式化后的JSON
err = os.WriteFile("formatted.json", formattedJSON, 0644)
if err != nil {
fmt.Printf("写入文件失败: %v\n", err)
return
}
fmt.Println("格式化后的JSON数据已成功写入formatted.json")
}
选择哪种方法取决于你的具体需求:
- 简单场景:使用
os.WriteFile - 需要格式化:使用方法5
- 处理大文件:使用
bufio.Writer - 需要更多控制:使用
os.Create配合写入方法

