做完后。閱讀所有關于一些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 可能無效 - 它是字符串數組,而不是對象數組??雌饋砟愕膶ο笤诰幗M時可能會被引用。
它可以解組為 ,而不是 。這幾乎可以肯定是不可取的,并且在對源數據進行編碼時是錯誤的。最好的方法是修復導致 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 關注
- 77 瀏覽
添加回答
舉報
0/150
提交
取消