嵌套结构中的JSON解组

Sjors Hijgenaar:

我试图将传入的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)
}
Himanshu:

您的代码中存在三个错误,一个是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[]AssetStorageDataInput

另一个错误是,您将struct EmployeeID字段类型声明,应为AssetStorageintstring

Go操场上的工作守则

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章