1 回答

TA貢獻1805條經(jīng)驗 獲得超10個贊
我認為你發(fā)送的字符串key是func GetBytes(key interface{}) ([]byte, error). 這就是您看到轉(zhuǎn)義字符的原因。
package main
import (
"encoding/json"
"fmt"
"log"
)
func f(key interface{}) {
json, err := json.Marshal(key)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(json))
}
func main() {
data := map[string]interface{}{
"A": 1,
"B": 2,
}
f(data)
json, err := json.Marshal(data)
if err != nil {
log.Fatal(err)
}
f(string(json))
}
輸出:
{"A":1,"B":2}
"{\"A\":1,\"B\":2}"
去游樂場鏈接:https://play.golang.org/p/iF1ckvZ9cQC
在這種情況下,您可以使用Unquote刪除引號和轉(zhuǎn)義字符:
package main
import (
"encoding/json"
"fmt"
"log"
"strconv"
)
func f(key interface{}) {
json, err := json.Marshal(key)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(json))
st, err := strconv.Unquote(string(json))
fmt.Println(st)
}
func main() {
data := map[string]interface{}{
"A": 1,
"B": 2,
}
json, err := json.Marshal(data)
if err != nil {
log.Fatal(err)
}
f(string(json))
}
輸出:
"{\"A\":1,\"B\":2}"
{"A":1,"B":2}
Go 游樂場鏈接:https://play.golang.org/p/aoTEQtJslTs
- 1 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報