我有这样的 JSON: {"key1": "value1", n n "key2": "value2nwithnewline"}
我想要:
所以我将拥有一个有效的 JSON。
我尝试过:regex,但未能弄清楚如何在键和值之外指定。
还有这个:
package main import ( "bytes" "fmt" ) func main() { jsonStr := `{"key1": "value1", n n "key2": "value2nwithnewline"}` 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 游乐场链接:https://go.dev/play/p/zvNSCuE4SjQ
这不起作用,因为它可以 n
实际上是
n
鉴于您问题的参数,您可以使用 strings.ReplaceAll
替换所有 nn:
cleaned := strings.ReplaceAll(input, "\n \n ", "")
如果您想继续使用当前的策略,则会遇到一些问题。其中之一是,无论您的条件如何,您总是会写入字符串: cleaned.WriteByte(jsonStr[i])
发生在您的 if 和 else 情况下。