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

解析戈朗中的转义 json 字符串

解析戈朗中的转义 json 字符串

Go
MM们 2022-09-12 17:07:16
假设我有这个 json 字符串:{\"A\":\"a\",\"B\":\"b\",\"C\":\"c\",\"D\":2,\"E\":\"e\"}我想将上面的字符串转换为结构:{   A string   B string   C string   D int   E string   }我不知道该怎么做,因为我已经做了引用和取消引用,但似乎还没有成功。
查看完整描述

3 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

在像这样取消引号之前,请包装传入的字符串:

s,err := strconv.Unquote(`"`+yourstring+`"`)

然后,您可以继续取消编组。


查看完整回答
反对 回复 2022-09-12
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

有点黑客,但输入字符串是如果它在JSON对象中将被编码的方式,所以你可以这样做:


x:=json.RawMessage(`"{\"A\":\"a\",\"B\":\"b\",\"C\":\"c\",\"D\":2,\"E\":\"e\"}"`)

var v string

err:=json.Unmarshal(x,&v)

var x MyStruct

json.Unmarshal([]byte(v),&x)  


查看完整回答
反对 回复 2022-09-12
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

你可以使用mfathirirhas建议的方法,我已经创建了一个小代码来描述你的场景,如下所示:Unquotestrconv


package main


import (

    "encoding/json"

    "fmt"

    "strconv"

)


type response struct {

    A string

    B string

    C string

    D int

    E string

}


func main() {


    str := (`"{\"A\":\"a\",\"B\":\"b\",\"C\":\"c\",\"D\":2,\"E\":\"e\"}"`)

    fmt.Printf(str)

    s, err := strconv.Unquote(str)

    fmt.Println()

    fmt.Println(s, err)

    var resp response

    if err := json.Unmarshal([]byte(s), &resp); err != nil {

        panic(err)

    }

    fmt.Println(resp)


}

输出:


"{\"A\":\"a\",\"B\":\"b\",\"C\":\"c\",\"D\":2,\"E\":\"e\"}"

{"A":"a","B":"b","C":"c","D":2,"E":"e"} <nil>

{a b c 2 e}


查看完整回答
反对 回复 2022-09-12
  • 3 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

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