为了账号安全,请及时绑定邮箱和手机立即绑定

编组后删除转义字符

编组后删除转义字符

Go
摇曳的蔷薇 2023-05-08 18:03:39
在上面的代码中,我试图通过 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}"
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

我认为你发送的字符串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}

Go 游乐场链接:https://play.golang.org/p/aoTEQtJslTs


查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信