3 回答
TA贡献1890条经验 获得超9个赞
在像这样取消引号之前,请包装传入的字符串:
s,err := strconv.Unquote(`"`+yourstring+`"`)
然后,您可以继续取消编组。
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)
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}
- 3 回答
- 0 关注
- 103 浏览
添加回答
举报