json - 使用 Go 正确解析 JSON 数据时出错

标签 json string parsing csv go

我是 Go 的新手,正在尝试使用 github 中的库将 JSON 解析为 CSV。 https://github.com/jehiah/json2csv

但我遇到了这个问题:https://github.com/jehiah/json2csv/issues/22作者没有回复。

我意识到,如果我们将以下 JSON 作为 json.input 提供给文件:

{"user": {"name":["jehiah, mike, semo"], "password": "root"}, "remote_ip": "127.0.0.1", "dt" : "[20/Aug/2010:01:12:44 -0400]"}
{"user": {"name":["jeroenjanssens", "jeroen2", "jero55"], "password": "123"}, "remote_ip": "192.168.0.1", "dt" : "[20/Aug/2010:01:12:44 -0400]"}
{"user": {"name":"markdata", "password": ""}, "remote_ip": "76.216.210.0", "dt" : "[20/Aug/2010:01:12:45 -0400]"}

现在,如果我尝试将它用作命令:go run main.go -k user.name -i input.json -o output.json

它返回以下输出:

"[jehiah, mike, semo]"
[jeroenjanssens jeroen2 jero55]
markdata

但如 opend issued 中所述,我期待响应为:

jehiah, mike, semo
jeroenjanssens, jeroen2, jero55
markdata

我猜它是由于行而发生的:https://github.com/jehiah/json2csv/blob/master/main.go#L110无论如何,这就是在阅读该行时删除逗号。

能否就如何实现上述预期输出提出建议?

问候

最佳答案

使用这段代码,您将能够真正轻松地读取 Go 结构中的 json 数据:

package main

import (
    "encoding/json"
    "fmt"
)

// define the User type 
type User struct {
    Name     []string
    Password string
}

type DataStruct struct {
    User      User
    Remote_ip string
    Dt        string
}

func main() {
     var jsonBlob = []byte(`{"user": {"name":["jehiah, mike, semo"], "password": "root"},
  "remote_ip": "127.0.0.1", "dt" : "[20/Aug/2010:01:12:44 -0400]"}`)

     var data DataStruct
     err := json.Unmarshal(jsonBlob, &data)
     if err != nil {
          fmt.Println("error:", err)
     } else {
          fmt.Printf("%+v", data)
     }

}

如果您从未使用过encoding/json 包,您应该阅读官方 Golang json article .

当您正确读取DataStruct 结构中的数据后,您将能够使用适当的Golang csv package 序列化它。 .

关于json - 使用 Go 正确解析 JSON 数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25566411/

相关文章:

javascript - 如何在 Array 中查找使用 JSON.parse 产生错误的对象

php - 通过相关实体正确递归

javascript - obj == JSON.parse(JSON.stringify(obj))为假

java - 改造如何打印响应 JSON

java - 用空字符串初始化 String[]

c++ - 如何将带有双反斜杠的字符串转换为单反斜杠

json - 使用自定义解码器处理嵌套的 JSON 结构

java - 千个分隔数字的正则表达式

php - 我们如何从文件中获取文本(逐字)到 PHP 中的二维数组中?

arrays - 快速将文本数据读入数组