json - 解码数组时无法将数组解组为 Go 结构
问题描述
我正在尝试将 JSON 字符串正确解码为对象。
我定义了以下结构:
type AjaxModelsList struct {
Id float64 `json:"Id"`
Name string `json:"Name"`
CarId float64 `json:"CarId"`
EngName string `json:"EngName"`
}
type AjaxModelsData struct {
ModelList []AjaxModelsList `json:"ModelList"`
}
type AjaxModels struct {
Status bool `json:"status"`
Data map[string]AjaxModelsData `json:"data"`
}
定义的对象是
{
"status": true,
"data": {
"ModelList": [{
"Id": 1,
"Name": "foo",
"CarId": 1,
"EngName": "bar"
}]
}
}
我使用以下代码解组:
c :=AjaxModels{}
if err := json.Unmarshal(body_byte,&c); err != nil {
log.Fatalf("an error occured: %v",err)
}
我得到以下输出:
an error occured: json: cannot unmarshal array into Go struct field AjaxModels.data of type main.AjaxModelsData
因为我使用[]AjaxModelsList
它是一个切片,所以我不应该得到这个错误。我可能错过了什么,但是什么?
解决方案
在结构中是json
,而在 Go中是。改为改为。data
object[key]array
Data
map[key]struct.slice
Data
map[key]slice
例如
type AjaxModels struct {
Status bool `json:"status"`
Data map[string][]AjaxModelsList `json:"data"`
}
推荐阅读
- python - 组合两个“for”循环 - ValueError: no enough values to unpack (expected 3, got 1)
- java - 在 Cmake 中使用 Swig 不能正确链接 Java
- python - 使用 Dask 转换双列表推导
- laravel - 在服务器中部署我的 laravel 应用程序时发现错误
- python - 在 python 中链接 web 应用程序的后端和在颤振中链接前端
- mongodb - 尝试连接到 MongoDB 的 Docker 实例时出现 MongoServerSelectionError
- excel - 根据重复的标题指定要删除的列范围
- sql - 在 Spark SQL 中查找表大小(以 MB/GB 为单位)
- excel - SSIS 项目 - 通过包参数的 Foreach 循环
- r - 如何在 R 中构建效用矩阵?