代码之家  ›  专栏  ›  技术社区  ›  Harimbola Santatra

如何获取JSON中包含unicode代码点的键的值?

  •  0
  • Harimbola Santatra  · 技术社区  · 1 年前

    我试图构建一个程序,从JSON中提取数据并将其放入自定义结构中。JSON包含像“foo\u0000”这样的键,所以我不能只使用 Unmarshal 。我尝试使用struct标签,它对“常规”标签非常有效,但当我使用像这样的格式时就不行了 \u... .

    我试过这个:

    package main
    
    import (
            "encoding/json"
            "fmt"
    )
    
    type MyStruct struct {
            x string `json:"foobar\u0062"`
            Name string `json:"Username"`
    }
    
    func main() {
            data := []byte(`{"foobar\u0062": "some value", "Username": "xxx"}`)
    
            var ms MyStruct
            err := json.Unmarshal(data, &ms)
            if err != nil {
                    panic(err)
            }
    
            fmt.Println(ms.x)
            fmt.Println(ms.Name)
    }
    

    在上面的示例中,键 Username 在JSON中,可以通过字段访问 Name 结构体的 ms 钥匙的情况并非如此 foobar\u0062 .

    为什么?我怎样才能得到 foobar\u0062 在这种情况下,什么是“某种价值”?

    1 回复  |  直到 1 年前
        1
  •  1
  •   wim    1 年前

    结构体字段 x 具有json标签,但未导出。如果你成功了 X 相反(或任何以大写开头的代码),这段代码应该可以工作。

    高unicode代码点与此无关。