我想解组一个包含正则表达式语法的字符串,所以有
.... . Json 解组失败!其实我发现需要四个\d \w \(
before escapse chars,我不想用\
,怎么办?strings.ReplaceAll(str, "\\", "\\\\")
package main
import (
"encoding/json"
"fmt"
"strconv"
)
func main() {
var original = "{\"photo\":\"abc\\w\"}" // \\w will err, but \\\\w will work
fmt.Println("src msg: ", original)
un, err := strconv.Unquote(original)
fmt.Println(err, un)
fmt.Println("unmarshal bytes")
msg := struct {
Photo string
}{}
err = json.Unmarshal([]byte(original), &msg)
fmt.Println("Unmarshal res: ", err, msg.Photo)
}
结果:
src msg: {"photo":"abc\w"}
invalid syntax
unmarshal bytes
Unmarshal res: invalid character 'w' in string escape code
\\w
换成\\n
也可以!\
===> {\"photo\":\"abc\\\\w\"}
结果还可以!var original = "{\"photo\":\"abc\\\\w \\n\"}"
src msg: {"photo":"abc\\w \n"}
invalid syntax
unmarshal bytes
Unmarshal res: <nil> abc\w
如何理解这个案例?以及如果包含
但不包含\\w
,如何解组字符串?\\\\w