json:无法将对象解组为Go类型的值
我无法解码下面的json代码。。。你知道为什么它不起作用吗?另见json:无法将对象解组为Go类型的值,json,go,Json,Go,我无法解码下面的json代码。。。你知道为什么它不起作用吗?另见 JSON与结构字段不匹配:例如JSON中的“district”和字段中的“district” 另外:您的项是切片类型,但JSON是dict值。不要把这个弄混了。切片从阵列解码。这里有一个固定版本: 所需的最大修复是在解组数组时,该属性也需要是结构中的数组/切片 例如: { "things": ["a", "b", "c"] } 将解组成一个: type Item struct { Things []string } 而
JSON与结构字段不匹配:例如JSON中的“district”和字段中的“district”
另外:您的项是切片类型,但JSON是dict值。不要把这个弄混了。切片从阵列解码。这里有一个固定版本: 所需的最大修复是在解组数组时,该属性也需要是结构中的数组/切片 例如:
{ "things": ["a", "b", "c"] }
将解组成一个:
type Item struct {
Things []string
}
而非:
解组时要注意的另一件事是类型完全对齐。当将数字的JSON字符串表示形式解组到
int
或float
字段中时,它将失败--“1”
需要解组到字符串中,而不是像我们在ShippingAdditionalCost int中看到的那样,从Go 1.8开始,根本原因的确定就不是问题;字段名称现在显示在错误消息中:
json: cannot unmarshal object into Go struct field Comment.author of type string
如果你想从AWS的角度寻找答案,特别是当你试图对从DynamoDBquery()
返回的项目使用UnmarshalListOfMaps()
时,请注意我的一个简单打字错误
假设此函数解组ListofMaps()
接受…一个映射列表:-),那么它需要解组到一个列表
中,该列表包含您试图构建的任何结构,而不仅仅是普通结构本身。这让我很恼火,因为我试图从查询只应返回一行的内容开始
movie:=movie{}
//运行DynamoDB查询
resp,err:=session.Query(输入)//键入QueryInput
如果出错!=零{
log.WithError(err.Error)(“运行DynamoDB查询时出错”)
}
//将所有属性值解组到电影结构中
err=dynamodbattribute.UnmarshalListOfMaps(分别为项目和电影);如果出错!=零{
log.WithError(err.Error)(“将DynamoDB结果封送到电影中时出错”)
返回链接,错误
}
问题在第一行。它应该是movies:=[]Movie{}
,然后引用&Movie
也需要更改为&movies
。如果您保持与上面一样,AWS Go SDK将抛出以下错误:
无法将列表解组为类型(etc)的Go值。
\u版本
未导出(私有;由于大小写较低),因此JSON包无法解组。按照以下答案使用结构标记:@elithrar我已经添加了标记,但仍然不起作用,因为你可以看到结构在同一个主包中,所以小写应该没有任何问题。我不确定你的意思。golang中没有“dic”类型。@mihai he的意思是地图。它与hash
或dict
相同。
type Item struct {
Things string
}
json: cannot unmarshal object into Go struct field Comment.author of type string