在golang中使用反斜杠解析JSON
我有一个客户端将smb用户信息作为json对象发送。用户有两个反斜杠-例如:{“user”:“AD.example\\stack”,“password”:“gamma”} 我有一个golang应用程序,如下所示:在golang中使用反斜杠解析JSON,json,go,Json,Go,我有一个客户端将smb用户信息作为json对象发送。用户有两个反斜杠-例如:{“user”:“AD.example\\stack”,“password”:“gamma”} 我有一个golang应用程序,如下所示: type smb_cred struct { User string `json:"user"` Password string `json:"password"` } var cred smb_cred err = json.Unmarshal(input
type smb_cred struct {
User string `json:"user"`
Password string `json:"password"`
}
var cred smb_cred
err = json.Unmarshal(input, &cred)
解组后,它去掉一个反斜杠,因此结果字符串只包含一个斜杠。我正在尝试使用斜杠分隔符拆分字符串,以分离用户和AD域,并将其作为以下内容传递到cifs装载:mount-t cifs-o username=stack,password=gamma,domain=AD.EXAMPLE
如何使用baskslash作为分隔符拆分字符串
----用补丁更新----
strings.Split(cred.User,\\”
修复了我的问题。反斜杠是中的转义字符。反斜杠后面的字符具有特殊含义
是单个\
\
是单个\“
”
是一个换行符\n
是一个\u2603
“AD.EXAMPLE\\stack”
是字符串AD.EXAMPLE\stack
。这是正确的JSON,Go通过将\\
解释为\
来做正确的事情
如果您确实想要
AD.EXAMPLE\\stack
您需要添加另一个转义的\
“AD.EXAMPLE\\\\stack”
那些看起来像反斜杠的字符串。JSON字符串(与大多数情况一样)使用反斜杠作为转义字符,因此带有双反斜杠的字符串表示带有单反斜杠的字符串。它的工作原理与预期完全一致。此外,在上下文中,它似乎是一个AD域用户,正确地说是域,后跟一个反斜杠,后跟用户名。所以,同样地,它完全按照它应该的方式工作。这意味着什么?带有反斜杠的字符串不是非法的。“因为该字符串包含一个反斜杠,所以我不能分隔”没有意义。只需在反斜杠上拆分字符串。