编组后删除转义字符

在上面的代码中,我试图通过 Marshal 将我的密钥转换为字节数组。虽然我成功地做到了,但是当我看到编组字符串时,我\在我的 json 键之前看到了转义字符。你能帮我把那个去掉吗?


 func GetBytes(key interface{}) ([]byte, error) {


    b, err := json.Marshal(key)

    if err != nil {

            return nil, err

    }


    log.Println("%%%%%%%%%%")

    log.Printf("%+v\n", key)

    log.Println("##########")

    log.Println(string(b));


    return b, nil

}

当前输出:


%%%%%%%%%%

{"entityId":5010740929,"eventTime":1542706233458}

##########

"{\"entityId\":5010740929,\"eventTime\":1542706233458}"


摇曳的蔷薇
浏览 102回答 1
1回答

holdtom

我认为你发送的字符串key是func GetBytes(key interface{}) ([]byte, error). 这就是您看到转义字符的原因。package mainimport (    "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 mainimport (    "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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go