json - 将来自多个单元格的数据合并到一个 JSON 对象中

标签 json excel go xlsx

我正在尝试将 Excel 电子表格中多个单元格的数据合并为一个 JSON 编码字符串。我不知道该怎么做,下面的代码是为每个单元格创建一个新的 JSON 对象。如何区分单元格以组合成相同的 JSON 字符串?

package main

import (
    "fmt"
    "github.com/tealeg/xlsx"
    "encoding/json"

)

func main() {
    excelFileName := "/Users/isaacmelton/Desktop/Test_Data.xlsx"
    xlFile, err := xlsx.OpenFile(excelFileName)
    if err != nil {
        fmt.Printf("Cannot parse data")
    }
    for _, sheet := range xlFile.Sheets {
        for _, row := range sheet.Rows {

            fmt.Printf("\n")
            for x, cell := range row.Cells {
                if x == 3 || x == 5 {
                    data := map[string]string{"d_name": cell.String(), "name": cell.String()}
                    json_data, _ := json.Marshal(data)

                    fmt.Println(string(json_data))
                }
            }
        }
    }
}

运行上面的代码会产生以下结果:

{"foo":"cell1","bar":"cell1"}
{"foo":"cell2","bar":"cell2"}

我期待这样的事情:

{"foo":"cell1", "bar":"cell2"}

最佳答案

如果我正确理解您的要求,您只需定义根元素,向其中添加单元格并编码该元素而不是单个单元格。

root := []map[string]string{}
for x, cell := range row.Cells {
    if x == 3 || x == 5 {
        root = append(root, map[string]string{"d_name": cell.String(), "name": cell.String()})
    }
}
json_data, _ := json.Marshal(root)
fmt.Println(string(json_data))

http://play.golang.org/p/SHnShHvW_0

关于json - 将来自多个单元格的数据合并到一个 JSON 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35710401/

相关文章:

parsing - 更改 time.Time 时区而不重新解析

javascript - 如何在变量中插入动态多行文本框生成的值

vba - Worksheet_Change 事件中的 Excel VBA 静态时间戳

mongodb - 如何使用golang在mongodb中生成并存储uuid类型0x04?

excel - 我需要设置excel工作表的路径,以便我可以使用相对路径加载dll

excel - for next 循环无法为变量分配值 - VBA

testing - 如何重写此 select 语句以保证 100% 的测试覆盖率?

python - 如何接受python json字典中的任何键?

json - react 获取 : Getting json result but showing network error

python - 你如何解决 'dict' 对象没有属性 'write' ?