我想json strings用go語言反序列化。不同鍵的值類型不同。例如,在 中string {\"category\":\"6\",\"cid\":2511993760745787586},category類型是string,cid類型是int64。我的代碼如下:func main() { oriInfo := make([]interface{}, 0) pickled := "[{\"category\":\"6\",\"cid\":2511993760745787586},{\"category\":\"5\",\"cid\":2504429915944783937}]" err := json.Unmarshal([]byte(pickled), &oriInfo) if err != nil { fmt.Println(err) return } all := make([]map[string]interface{}, 0, len(oriInfo)) for _, val := range oriInfo { m := make(map[string]interface{}) for k, v := range val.(map[string]interface{}) { switch k { case "category": m[k] = v.(string) case "cid": m[k] = int64(v.(float64)) } } all = append(all, m) } fmt.Println(all)}結果如下:[map[category:6 cid:2511993760745787392] map[category:5 cid:2504429915944783872]]顯然,這不是我想要的,因為 的結果cid是2511993760745787392和2504429915944783872,但我原來的結果cid是2511993760745787586和2504429915944783937。除了使用struct之外,還有更好的方法嗎?
1 回答

12345678_0001
TA貢獻1802條經驗 獲得超5個贊
執行此操作的正常方法是使用結構:
type myStruct struct {
? ? Category string `json:"category"`
? ? CID? ? ? int64? `json:"cid"`
}
var oriInfo []myStruct
err := json.Unmarshal([]byte(pickled), &oriInfo)
// ... etc
- 1 回答
- 0 關注
- 130 瀏覽
添加回答
舉報
0/150
提交
取消