Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在golang中使用反斜杠解析JSON_Json_Go - Fatal编程技术网

在golang中使用反斜杠解析JSON

在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

我有一个客户端将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, &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域用户,正确地说是域,后跟一个反斜杠,后跟用户名。所以,同样地,它完全按照它应该的方式工作。这意味着什么?带有反斜杠的字符串不是非法的。“因为该字符串包含一个反斜杠,所以我不能分隔”没有意义。只需在反斜杠上拆分字符串。