我是 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 發布中所述,我期待響應為:jehiah, mike, semojeroenjanssens, jeroen2, jero55markdata我猜這是由于以下行而發生的:https : //github.com/jehiah/json2csv/blob/master/main.go#L110無論如何在閱讀該行時刪除逗號。您能否就如何實現上述預期輸出提出建議?
2 回答

catspeake
TA貢獻1111條經驗 獲得超0個贊
這里有幾個問題在起作用:
JSON 定義的結構并不是都可以用 CSV 表示的,例如:
對象例如
{"name":"john"}
數組例如
["john", "mike", "sam"]
沒有 CSV 標準。嗯,有 RFC-4180,但大多數 CSV 編碼器/解碼器不遵守它,因為 Microsoft。
您使用的包編碼很差。
CSV 實現之間的主要區別之一是報價處理??紤] JSON 字符串:"\"Hello, world!\""
.
根據我們的編組器,我們最終可以得到字符串的以下任何 CSV 表示:
"""Hello, world!"""
"\"Hello, world!\""
'"Hello, world!"'
一些編碼器甚至會轉義字符串內的逗號。您描述的包通過完全跳過逗號來規避這個問題。如果你問我,這是一個非常糟糕的設計決定。
你需要的一切都在 Go 的標準庫中:
- 2 回答
- 0 關注
- 293 瀏覽
添加回答
舉報
0/150
提交
取消