Go json.Marshal 无法获取单个反斜杠

Go json.Marshal unable get single backslash

var (
    username        string = "ADuser\user"
    password         string = "PASS"
    userCredentials        = map[string]string{"username": username, "password": password}
)

func main() {
   jsonValue, _ := json.Marshal(userCredentials)
   ...
}

如果我尝试打印 marshal 值,我会得到这个输出

fmt.Println(string(jsonValue))
   Output:
      {"password":"PASS","username":"ADuser\user"}

但是如果我尝试只打印用户名,我会得到这个输出

fmt.Println(username)
    Output:
      ADuser\user

我需要这个输出:

fmt.Println(string(jsonValue))
   Output:
      {"password":"PASS","username":"ADuser\user"}

我尝试使用 ascii 代码,但我得到了相同的输出。有一些想法可以解决这个问题吗?

一切都是应该的。反斜杠在JSON中是一个特殊字符,如果一个字符串应该包含反斜杠,在JSON表示中它必须被转义,即加倍。

您在 JSON 文本中的用户名包含值 ADuser\user,但在 JSON 中必须用双反斜杠表示。

解码就会看到:

var decoded map[string]string
if err := json.Unmarshal(jsonValue, &decoded); err != nil {
    panic(err)
}

fmt.Println(decoded)

这将输出(在 Go Playground 上尝试):

map[password:PASS username:ADuser\user]