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

取消引用带有多个反斜杠的字符串

取消引用带有多个反斜杠的字符串

Go
30秒到达战场 2022-10-17 10:21:34
从一个来源我得到以下格式的数据(带前导双引号)data := `"{\"u\":\"Mozilla\\\/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox\\\/11.0 (via ggpht.com GoogleImageProxy)\"}"`_, err := strconv.Unquote(data)if err != nil {    panic(err)}我需要取消引用并将其转换为 json。但是由于像这里这样的尾随反斜杠Mozilla\\\/5.0得到错误invalid syntax。在 PHP 中,它是通过 double json_decodelike转换的json_decode(json_decode($data, true), true)如何在 go 中做同样的事情?正确取消转义此字符串。
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

该字符串是双重编码的 JSON。使用 JSON 解码器删除引号:


data := `"{\"u\":\"Mozilla\\\/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox\\\/11.0 (via ggpht.com GoogleImageProxy)\"}"`

var unquoted string

err := json.Unmarshal([]byte(data), &unquoted)

if err != nil {

    // TODO: handle error

}

再次解码以获取用户代理字符串:


var v struct{ U string }

err = json.Unmarshal([]byte(unquoted), &v)

if err != nil {

    // TODO: handle error

}

userAgent := v.U

在操场上运行程序。


查看完整回答
反对 回复 2022-10-17
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

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