这是完整的代码:
files, _ := ioutil.ReadDir("files")
for _, f := range files {
input, err := ioutil.ReadFile("files/" + f.Name())
lines := strings.Split(string(input), "\n")
for i, _ := range lines {
lines[i] = fmt.Sprintf("%v,", lines[i])
}
output := strings.Join(lines, "\n")
err = ioutil.WriteFile("files/"+f.Name()+"fix", []byte(output), 0644)
if err != nil {
log.Fatalln(err)
}
}
我认为这是因为lines [i]必须在字符串的末尾包含一个换行字节..我试图删除它但是失败了..
我加载的文件只是json文件,例如。
第1行:{ "foo":"bar","baz":null }
第2行:{ "foo":"bar","baz":"quz" }
我试图在所有行的末尾添加一个逗号..任何帮助都将非常感激
为了让自己更清楚一点,我现在得到的是:
{ "foo":"bar","baz":null }
,
{ "foo":"bar","baz":"quz" }
,
而我想得到的是:
{ "foo":"bar","baz":null },
{ "foo":"bar","baz":"quz" },
答案 0 :(得分:1)
您的JSON数据是否可能来自Windows并且实际上包含/ r / n而不仅仅是/ n?
您可以在this playground example中使用/ r / n看到此行为:
package main
import (
"fmt"
"strings"
)
func main() {
a := "test\r\nnewtest\r\ntest2"
b := strings.Split(a, "\n")
c := strings.Join(b, ",\n")
fmt.Printf("%v", c)
}
答案 1 :(得分:1)
尝试修剪该行以清除它具有的任何尾随的unicode代码点:
import "strings"
// ...
for _, line := range lines {
line = fmt.Sprintf("%v,", strings.Trim(line, " \r\n"))
}