gpt4 book ai didi

go - 由于编码,Unmarshal 返回空白对象

转载 作者:数据小太阳 更新时间:2023-10-29 03:30:57 25 4
gpt4 key购买 nike

我正在尝试解码原始 json 字符串。编码似乎有错误,但我不太明白。

主要包

import (
"encoding/json"
"fmt"
"log"
)

type Foo struct {
Transmission string `json:"transmission"`
Trim string `json:"trim"`
Uuid string `json:"uuid"`
Vin string `json:"vin"`
}

func main() {

var foo Foo

sample := `{
"transmission": "continuously\x20variable\x20automatic",
"trim": "SL",
"uuid" : "6993e4090a0e0ae80c59a76326e360a1",
"vin": "5N1AZ2MH6JN192059"
}`

err := json.Unmarshal([]byte(sample), &foo)
if err != nil {
log.Fatal(err)
}
fmt.Println(foo)

}

2009/11/10 23:00:00 invalid character 'x' in string escape code

如果删除传输条目,它会起作用。

Here is a working playground .

最佳答案

您输入的 JSON 无效。 JSON spec指出

All code points may be placed within the quotation marks except for the code points that must be escaped: quotation mark (U+0022), reverse solidus (U+005C), and the control characters U+0000 to U+001F.

此外,虽然有两个字符的转义序列,但 \x 不是其中之一,因此它被 Go 解析器正确解释为无效的转义序列。如果您想在 JSON 中使用反斜杠文字,则需要在 JSON 输入本身中用 \\ 表示。查看示例的修改版本:https://play.golang.org/p/JZdPJGpPR5q

(请注意,这不是您的 Go 字符串文字的问题,因为您已经在使用原始 (``) 字符串文字——JSON 本身需要有两个反斜杠。)

关于go - 由于编码,Unmarshal 返回空白对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53038095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com