JSON是这样的:{"key1": "value1", \n \n "key2": "value2\nwithnewline"}
我想要:
1.删除\n \n
1.用新行保持值2\n
所以我会有一个有效的JSON。
我尝试的是:regrex但是没有弄清楚如何指定键和值的外部。
还有这个
package main
import (
"bytes"
"fmt"
)
func main() {
jsonStr := `{"key1": "value1", \n \n "key2": "value2\nwithnewline"}`
var cleaned bytes.Buffer
quoteCount := 0
for i := 0; i < len(jsonStr); i++ {
if jsonStr[i] == '"' {
quoteCount++
}
if quoteCount%2 == 0 && jsonStr[i] != '\n' {
cleaned.WriteByte(jsonStr[i])
} else if quoteCount%2 == 1 {
cleaned.WriteByte(jsonStr[i])
}
}
fmt.Println(cleaned.String())
}
Go playground:https://go.dev/play/p/zvNSCuE4SjQ
这不起作用,因为它可以\n
实际上是\
n
2条答案
按热度按时间nue99wik1#
给定问题的参数,您可以使用
strings.ReplaceAll
替换所有\n\n:cleaned := strings.ReplaceAll(input, "\\n \\n ", "")
如果你想继续使用你目前的策略,有几个问题。其中之一是,你总是写字符串,不管你的条件:
cleaned.WriteByte(jsonStr[i])
发生在if和else中。lqfhib0f2#
你可以拆分和合并
包主
import(“fmt”“strings”)