做完后。阅读所有关于一些API的主体,我得到:-[91 34 123 92 34 78 111 79 102 86 105 101 119 115 92 34 58 123 92 34 48 92 34 58 48 125 44 92 34 78 111 79 102 76 105 107 101 115 92 34 58 123 92 34 48 92 34 58 48 125 44 92 34 78 111 79 102 67 111 109 109 101 110 116 115 92 34 58 123 92 34 48 92 34 5848 125 44 92 34 78 111 79 102 83 104 97 114 101 115 92 34 58 123 92 34 48 92 34 58 48 125 125 34 44 34 123 125 34 93 10]现在我必须将其解封为类型为 =type ActUser struct { NoOfViews map[string]int `json:"NoOfViews,omitempty"` NoOfLikes map[string]int `json:"NoOfLikes,omitempty"` NoOfComments map[string]int `json:"NoOfComments,omitempty"` NoOfShares map[string]int `json:"NoOfShares,omitempty"`}但当我这样做时var try []ActUsererr = json.Unmarshal(bodyBytes, &try)我得到错误:=无法将字符串取消到类型模型的Go值中。行动用户我尝试转换,但似乎没有任何效果。
1 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
您的示例 JSON 数据对应于 。[91 34 123 ...["{
这表明您收到的 JSON 可能无效 - 它是字符串数组,而不是对象数组。看起来你的对象在编组时可能会被引用。
它可以解组为 ,而不是 。这几乎可以肯定是不可取的,并且在对源数据进行编码时是错误的。最好的方法是修复导致 JSON 对象被引用为字符串的错误。[]string[]ActUser
或者,如果您必须从有缺陷的 JSON 中提取数据,则可以:
var strs []string
if err := json.Unmarshal(bodyBytes, &strs); err != nil {
log.Fatal(err)
}
if len(strs) == 0 {
log.Fatal("missing ActUser object")
}
var user ActUser
if err := json.Unmarshal([]byte(strs[0]), &user); err != nil {
log.Fatal(err)
}
另外,我建议使用 来显示原始 JSON 数据以进行调试(比 ASCII 代码列表容易得多)。fmt.Printf("%s\n", bodyBytes)
- 1 回答
- 0 关注
- 107 浏览
添加回答
举报
0/150
提交
取消
