Я думаю, вы отправляете строку как key
в func GetBytes(key interface{}) ([]byte, error)
.Вот почему вы видите побег персонажей.
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
, чтобы удалить кавычку и экранирующий символ:
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}
Перейти на игровую площадку: https://play.golang.org/p/aoTEQtJslTs