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

11

我已经开始使用golang进行工作,我试图将JSON字符串解析为结构体,但是它不起作用。

JSON字符串:

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

type pingDataFormat struct {
    userAccessToken          string
    uploadStartTimeInSeconds int
    uploadEndTimeInSeconds   int
    callbackURL              string 
}

以下是将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)

输出结果是:

JSON对象:::: map[dailies:[{ 0 0 }]]

这里的"dailies"没有数据,那么我是否遵循了正确的解析方法?如何在解析后获取数据?

1个回答

18

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

type pingDataFormat struct {
    UserAccessToken          string `json:"userAccessToken"`
    UploadStartTimeInSeconds int    `json:"uploadStartTimeInSeconds"`
    UploadEndTimeInSeconds   int    `json:"uploadEndTimeInSeconds"`
    CallbackURL              string `json:"callbackURL"`
}

那应该解决你的问题。

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


谢谢你的回答。 - nadim
2
不必每次都使用结构体来转换JSON,您可以使用以下代码:`var data map[string]interface{} if err := json.Unmarshal([]byte(body), &data); err != nil { panic(err) } fmt.Println(data)`这里的 body 是字符串。 - R Sun
有人能解释一下右边的 json:"{Name}" 是什么意思吗? - Kevin Riordan
1
https://www.sohamkamani.com/golang/json/ 这篇文章提供了比之前更好的解释,并回答了我的先前问题。 - Kevin Riordan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接