- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我从 json 文件中放入项目,我的代码可以输出扫描结果 json,但尝试使用内置进程将其解码为我的类型只会创建空值/零值。
预期:0,番茄,0.50
实际:0, , 0
项目.json
{
"id" : {"N" : "0"},
"description" : {"S": "tomato"},
"price" : {"N": "0.50"}
}
产品.go
type product struct {
id int
description string
price float64
}
我的查询函数:
func listAllProducts() []product {
sess, err := session.NewSession(&aws.Config{
Region: aws.String("us-east-1"),
},
)
svc := dynamodb.New(sess)
productList := []product{}
input := &dynamodb.ScanInput{
TableName: aws.String("Products"),
}
result, err := svc.Scan(input)
err = dynamodbattribute.UnmarshalListOfMaps(result.Items, &productList)
return productList
}
输出代码
productList := listAllProducts()
for _, p := range productList {
log.Println(strconv.Itoa(p.id) + ", " + p.description + ", " + strconv.FormatFloat(p.price, 'f', -1, 64))
}
最佳答案
All struct fields and with anonymous fields, are marshaled unless the any of the following conditions are meet.
- the field is not exported
Unmarshal
文档没有提及任何关于非导出字段的内容,但在 Go 中很常见并且预期在解码时也忽略非导出字段(你甚至不能 set non-exported fields毕竟使用 Go 的反射)。
我不知道如何使用 DynamoDB,但如果导出您的字段,您可能会好运:
type product struct {
Id int
Description string
Price float64
}
如果您需要使用小写字段名称编码结构,可以使用 dynamodbav
结构标记。
我还建议注意 dynamodbattribute.UnmarshalListOfMaps
返回的错误:
err = dynamodbattribute.UnmarshalListOfMaps(result.Items, &productList)
if err != nil {
/* Do something with the error here even if you just log it. */
}
对于 svc.Scan(input)
调用以及返回错误的所有其他内容也是如此。
关于json - DynamoDB UnmarshalListOfMaps 在 Go 中创建空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49714414/
我从 json 文件中放入项目,我的代码可以输出扫描结果 json,但尝试使用内置进程将其解码为我的类型只会创建空值/零值。 预期:0,番茄,0.50 实际:0, , 0 项目.json {
我有一个 DynamoDB 产品表(id (int), active (bool), name (string), price (int)),当我检索并尝试解码列表时,它返回空。 [{},{}] 结构
我是一名优秀的程序员,十分优秀!