[英]JSON unmarshal in nested struct
我試圖將傳入的JSON解組為包含結構數組的結構。 但是我得到了錯誤
“輸入無效.JSON格式錯誤.json:無法將數組解組為Go結構字段DataInput.Asset,類型為app.AssetStorage”
我試圖在這里重新創建代碼: 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)
}
您的代碼中有三個錯誤,一個是當您解組JSON時,您沒有使用DataInput
結構的地址。
這應該是:
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結構字段DataInput.Asset
DataInput.Asset
應該是JSON對象的數組有你需要改變你AssetStorage
於[]AssetStorage
在你的宣言DataInput
結構。
還有一個錯誤是你將AssetStorage
結構的EmployeeID
字段的類型聲明為一個int
,它應該是一個string
去游樂場的工作守則
答案在錯誤消息中:
輸入無效。 JSON格式錯誤。 json:無法將數組解組為類型為app.AssetStorage的Go結構字段DataInput.Asset
您正在解析的json將DataInput.Asset
作為AssetStorage
對象的數組 。 所以,類型需要是[]AssetStorage
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.