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

我正在尝试解组原始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 字符串转义码中的无效字符“x”


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

这是一个工作操场



心有法竹
浏览 126回答 2
2回答

蝴蝶不菲

您输入的 JSON 无效。JSON规范指出除了必须转义的代码点外,所有代码点都可以放在引号内:引号 (U+0022)、反斜线 (U+005C) 和控制字符 U+0000 到 U+001F。此外,虽然有两个字符的转义序列,但它\x不是其中之一,因此它被 Go 解析器正确解释为无效的转义序列。\\如果你想在你的 JSON 中有一个反斜杠文字,它需要在 JSON 输入本身中表示。(请注意,这不是您的 Go 字符串文字的问题,因为您已经在使用原始 ( ``) 字符串文字——JSON 本身需要有两个反斜杠。)

qq_花开花谢_0

您可以\x使用函数\\x替换string.Replace()。然后,Unmarshal 替换的字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go