Golang将代码执行结果导出为JSON文件的方法

Golang将代码执行结果导出为JSON文件的方法 你好, 我想将我的代码结果(通过一个简单的函数 testFunct 表示如下)导出到一个 JSON 文件中。我尝试创建一个结构体列表,但不确定这是否是正确的做法。有人能帮忙吗?谢谢…

package main

import (
	"fmt"
)

func main() {
	type allResults struct {
	length, result int
	}
	
		
	out := []allResults {} 
	
	for i := 0; i < 10; i++ {
		n := allResults{length: i, result: testFunct(i)}
		out = append(out,n)
	}
	
	fmt.Println(out)
	
}
func testFunct(length int) int{
	return length*10
}

更多关于Golang将代码执行结果导出为JSON文件的方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

我不太清楚你具体关心的是什么,但如果你想在代码中生成结构体切片,只需按以下步骤操作:

  1. 在你的导入中添加 encoding/json

  2. 你需要导出结构体的字段,所以将它们改为大写

    type allResults struct {
        Length, Result int
    }
    
  3. 将所有对字段的引用从小写改为大写

  4. 要生成 JSON 字符串,只需这样做

    b, err := json.Marshal(out)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(b))
    

更多关于Golang将代码执行结果导出为JSON文件的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


要将代码执行结果导出为JSON文件,可以使用encoding/json包。以下是修改后的代码示例:

package main

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

func main() {
    type allResults struct {
        Length int `json:"length"`
        Result int `json:"result"`
    }
    
    out := []allResults{}
    
    for i := 0; i < 10; i++ {
        n := allResults{Length: i, Result: testFunct(i)}
        out = append(out, n)
    }
    
    // 将结果转换为JSON
    jsonData, err := json.MarshalIndent(out, "", "  ")
    if err != nil {
        fmt.Println("JSON编码错误:", err)
        return
    }
    
    // 写入文件
    err = os.WriteFile("results.json", jsonData, 0644)
    if err != nil {
        fmt.Println("文件写入错误:", err)
        return
    }
    
    fmt.Println("结果已成功导出到 results.json")
}

func testFunct(length int) int {
    return length * 10
}

关键修改点:

  1. 结构体字段首字母大写(LengthResult),这是json包访问字段的要求
  2. 添加了JSON标签来指定导出时的字段名
  3. 使用json.MarshalIndent生成格式化的JSON数据
  4. 使用os.WriteFile将JSON数据写入文件

运行后会在当前目录生成results.json文件,内容如下:

[
  {
    "length": 0,
    "result": 0
  },
  {
    "length": 1,
    "result": 10
  },
  {
    "length": 2,
    "result": 20
  },
  // ... 其他结果
]
回到顶部