如何在字符串中转义字符(JSON格式)

12

如何以惯用方式转义仅需要根据JSON规范进行转义的字符串中的字符。

(我不是在尝试编组/解组对象或字符串,我只想转义字符串内的字符。)

这个方法可以工作,但肯定有更惯用的方法吧?https://play.golang.org/p/rcHZbrjFyyH

func main() {
    fmt.Println(jsonEscape(`dog "fish" cat`))
    //output: dog \"fish\" cat
}

func jsonEscape(i string) string {
    b, err := json.Marshal(i)
    if err != nil {
        panic(err)
    }
    // Trim the beginning and trailing " character
    return string(b[1:len(b)-1])
}

1
一个小的改进是返回 string(b[1:len(b)-1])。这将减少两个字节分配的内存。否则,编组是将字符串(或任何其他值)编码形式的方法。 - Charlie Tumahai
尝试使用HTMLEscape?https://golang.org/pkg/encoding/json/#HTMLEscape - Not_a_Golfer
1
你可以直接复制json包内部用于完成任务的代码。https://golang.org/src/encoding/json/encode.go#L876 大约在第876行。如果不考虑Unicode,它基本上只是一个“switch”。 - leaf bebop
json.HTMLEscape的作用是转义其他字符,以使JSON可以安全地嵌入HTML中。JSON只需要转义双引号、反斜杠和控制字符。 https://www.json.org - Jay
1个回答

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接