dongzhong1891 2013-05-10 12:02
浏览 206
已采纳

如何将JSON转换为CSV?

How can I fix the error?

http://play.golang.org/p/0UMnUZOUHw

// JSON to CSV in Golang
package main

import (
    "encoding/csv"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "os"
)

type Json struct {
    RecordID int64  `json:"recordId"`
    DOJ      string `json:"Date of joining"`
    EmpID    string `json:"Employee ID"`
}

func main() {
    // reading data from JSON File
    data, err := ioutil.ReadFile("./people.json")
    if err != nil {
        fmt.Println(err)
    }
    // Unmarshal JSON data
    var d []Json
    err = json.Unmarshal([]byte(data), &d)
    if err != nil {
        fmt.Println(err)
    }
    // Create a csv file
    f, _ := os.Create("./people.csv")
    defer f.Close()
    // Write Unmarshaled json data to CSV file
    w := csv.NewWriter(f)

    // How to proceed further?
    /* I am getting errors if i use below
    for _,obj := range d {
      var record []interface{}
      record = append(record, obj.RecordID)
      record = append(record, obj.DOJ)
      record = append(record, obj.EmpID)
      w.Write(record)
    }
    */
}

Error:

cannot use record (type []interface {}) as type []string in function argument
  • 写回答

2条回答 默认 最新

  • dongtong1226 2013-05-10 12:16
    关注

    For example,

    package main
    
    import (
        "encoding/csv"
        "encoding/json"
        "fmt"
        "io/ioutil"
        "os"
        "strconv"
    )
    
    type Json struct {
        RecordID int64  `json:"recordId"`
        DOJ      string `json:"Date of joining"`
        EmpID    string `json:"Employee ID"`
    }
    
    func main() {
        // reading data from JSON File
        data, err := ioutil.ReadFile("./people.json")
        if err != nil {
            fmt.Println(err)
        }
        // Unmarshal JSON data
        var d []Json
        err = json.Unmarshal([]byte(data), &d)
        if err != nil {
            fmt.Println(err)
        }
        // Create a csv file
        f, err := os.Create("./people.csv")
        if err != nil {
            fmt.Println(err)
        }
        defer f.Close()
        // Write Unmarshaled json data to CSV file
        w := csv.NewWriter(f)
        for _, obj := range d {
            var record []string
            record = append(record, strconv.FormatInt(obj.RecordID, 10))
            record = append(record, obj.DOJ)
            record = append(record, obj.EmpID)
            w.Write(record)
        }
        w.Flush()
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 用三极管设计一个单管共射放大电路
  • ¥20 fluent无法启动
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架