如何将 JSON 字符串转换为结构体

nad*_*dim 8 json struct go

我已经开始在 golang 中工作,我正在尝试将 JSON 字符串解析为结构体,但它不起作用。

JSON 字符串:

dailies":[{"userAccessToken":"accessToken","uploadStartTimeInSeconds":1499744832,"uploadEndTimeInSeconds":1499744832,"callbackURL":"callbackurl"}]}

type pingDataFormat struct {
    userAccessToken          string
    uploadStartTimeInSeconds int
    uploadEndTimeInSeconds   int
    callbackURL              string 
}
Run Code Online (Sandbox Code Playgroud)

下面是将 JSON 字符串转换为结构的代码

pingJSON := make(map[string][]pingDataFormat)

err := json.Unmarshal([]byte(pingData), &pingJSON)

if err != nil {
    panic(err)
}

fmt.Printf("\n\n json object:::: %v", pingJSON)
Run Code Online (Sandbox Code Playgroud)

输出是:

json object:::: map[dailies:[{ 0 0 }]]

这里的“日报”没有数据,那么我是否遵循正确的解析方法以及解析后如何获取数据?

sbe*_*rry 12

pingDataFormat需要导出的字段(以大写字母开头)

type pingDataFormat struct {
    UserAccessToken          string `json:"userAccessToken"`
    UploadStartTimeInSeconds int    `json:"uploadStartTimeInSeconds"`
    UploadEndTimeInSeconds   int    `json:"uploadEndTimeInSeconds"`
    CallbackURL              string `json:"callbackURL"`
}
Run Code Online (Sandbox Code Playgroud)

那应该可以解决您的问题

https://play.golang.org/p/Z3yszFl01L

  • 您可以使用 `var data map[string]interface{} if err := json.Unmarshal([]byte(body), &data); ,而不是每次都使用结构体来转换 json。err != nil {panic(err) } fmt.Println(data)` 这里 `body` 是字符串 (2认同)