Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在结构的键中使用连字符来解组json字符串?_Json_Go_Struct - Fatal编程技术网

如何在结构的键中使用连字符来解组json字符串?

如何在结构的键中使用连字符来解组json字符串?,json,go,struct,Json,Go,Struct,我有以下代码,这是确定的,它将打印Bob: package main import ( "encoding/json" "fmt" ) type User struct { UserName string // line2 Age int } func main() { var u User str := `{"userName":"Bob", "age": 20}` // line1 json.Unmarshal([]byte(

我有以下代码,这是确定的,它将打印
Bob

package main

import (
    "encoding/json"
    "fmt"
)

type User struct {
    UserName string  // line2
    Age  int
}

func main() {
    var u User
    str := `{"userName":"Bob", "age": 20}` // line1
    json.Unmarshal([]byte(str), &u)
    fmt.Println(u.UserName)
}
不幸的是,在实际情况中,
line1
中的json字符串是下一个,您可以看到键中有一个连字符(
-

str := `{"user-Name":"Bob", "age": 20}`
大家都知道,要自动解组json字符串,我们必须在struct中定义一个与json字符串中的键同名的成员,当然需要将其设置为大写。因此,我尝试将
line2
更改为
User Name string
,但
-
go
变量名中无效。我应该怎么做?

只需使用将结构字段映射到JSON属性:

type User struct {
    UserName string `json:"user-Name"`
    Age      int
}
有了这个,它会起作用的,试着用它在地板上