我试图将传入的JSON解组到包含结构数组的结构中。但是我得到了错误
“无效的输入。JSON格式错误。json:无法将数组解组到类型为app.AssetStorage的Go结构字段DataInput.Asset中”
我尝试在此处重新创建代码:https : //play.golang.org/p/RuBaBjPmWxO,但是我无法重现该错误(尽管传入消息和代码相同)。
type AssetStorage struct {
Event string `json:"Event"`
EmployeeID int `json:"EmployeeID"`
EmployeeEmail string `json:"EmployeeEmail"`
PerformedBy string `json:"PerformedBy"`
Timestamp string `json:"Timestamp"`
AlgorithmID string `json:"AlgorithmID"`
AlgorithmHash string `json:"AlgorithmHash"`
Objects []Object `json:"Objects"`
}
type Object struct {
ShortName string `json:"ShortName"`
Hash string `json:"Hash"`
DestroyDate string `json:"DestroyDate"`
}
type DataInput struct {
Username string
Token string `json:"Token"`
Asset AssetStorage `json:"Asset"`
}
func main() {
var data DataInput
json.Unmarshal(input, data)
data.Username = data.Asset.EmployeeEmail
fmt.Printf("%+v\n", data)
}
您的代码中存在三个错误,一个是DataInput
您在解组JSON时没有使用struct的地址。
应该是:
var data DataInput
json.Unmarshal(input, data)
如下所示:
var data DataInput
if err := json.Unmarshal(input, &data); err != nil {
log.Println(err)
}
以上代码中的一项建议。永远不要跳过错误以了解有关错误的更多信息
接下来,错误提示:
输入无效。JSON格式错误。json:无法将数组解组到类型为app.AssetStorage的Go struct字段DataInput.Asset中
DataInput.Asset
应该是json对象的数组,您应该在struct 的声明中将其更改AssetStorage
为。[]AssetStorage
DataInput
另一个错误是,您将struct 的EmployeeID
字段类型声明为,应为AssetStorage
int
string
Go操场上的工作守则
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句