使用AWS CLI将使用Json文件的项目放入AWS DynamoDB中
使用AWS CLI和以下命令在dynamo DB中放置以下JSON时:使用AWS CLI将使用Json文件的项目放入AWS DynamoDB中,json,amazon-web-services,amazon-dynamodb,aws-lambda,aws-cli,Json,Amazon Web Services,Amazon Dynamodb,Aws Lambda,Aws Cli,使用AWS CLI和以下命令在dynamo DB中放置以下JSON时: aws dynamodb put-item --table-name ScreenList --item file://tableName.json 我收到了参数验证失败的异常。我已经仔细阅读了AWS文档,但没有找到插入复杂json的示例。欢迎提供每一个小帮助 更新的Json: { "itemName": { "S": "SCREEN_LIST" }, "productName": { "S":
aws dynamodb put-item --table-name ScreenList --item file://tableName.json
我收到了参数验证失败的异常。我已经仔细阅读了AWS文档,但没有找到插入复杂json的示例。欢迎提供每一个小帮助
更新的Json:
{
"itemName": {
"S": "SCREEN_LIST"
},
"productName": {
"S": "P2P_MOBITEL"
},
"screenList": {
"L": [
{
"menu": {
"L": [
{
"M": {
"menuId": {
"N": "1"
},
"menuText": {
"S": "ENG_HEADING"
},
"menuType": {
"S": "Dynamic"
}
}
}
]
},
"M": {
"screenFooter": {
"S": "F_LANGUAGE_CHANGE"
},
"screenHeader": {
"S": "H_LANGUAGE_CHANGE"
},
"screenId": {
"S": "LANGUAGE_CHANGE"
},
"screenType": {
"S": ""
}
}
}
]
}
}
您似乎没有正确定义复杂类型。根据需要,您应该定义如下列表:
"L": ["Cookies", "Coffee", 3.14159]
"M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}}
"menu": {
"L": [
{
"M": {
"menuId": {"N" :"1"},
"menuText": {"S" :"PACKS_SCREEN"},
"menuType": {"S" :"Dynamic"}
}
}
]
}
地图的定义如下:
"L": ["Cookies", "Coffee", 3.14159]
"M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}}
"menu": {
"L": [
{
"M": {
"menuId": {"N" :"1"},
"menuText": {"S" :"PACKS_SCREEN"},
"menuType": {"S" :"Dynamic"}
}
}
]
}
这意味着菜单
映射的定义如下:
"L": ["Cookies", "Coffee", 3.14159]
"M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}}
"menu": {
"L": [
{
"M": {
"menuId": {"N" :"1"},
"menuText": {"S" :"PACKS_SCREEN"},
"menuType": {"S" :"Dynamic"}
}
}
]
}
请注意“M”和“L”属性
您应该以类似的方式更改JSON的其余部分
您可以找到完整的JSON定义
更新
现在您的列表定义不正确。你有:
"screenList":{
"L":[
{
"menu":{ ... },
"M":{ ... }
}
]
}
虽然它应该是:
"screenList":{
"L":[
{
"M":{ ... }
},
{
"M":{ ... }
},
]
}
它再次表示was参数验证异常…它表示未知参数“菜单”。它必须是:S、N、B、M、L中的一个。我不确定这是StackOverflow还是JSON的问题,但它没有通过JSON验证。首先尝试确保这是有效的JSON(例如,您可以使用在线格式化程序:),另外,您可以在问题中更新JSON吗?在评论部分很难阅读它。它起作用了,但在这里我需要地图的名称。条目与“L”、“M”一起添加到表中。我想用一些名称替换列表“L”中的2个地图“M”、“M”,以便我可以轻松检索,我的表变得可读。列表中可以有项目名称。您可以将“screenList”制作成一个映射(我猜它应该是“screenMap”),或者您可以将一个嵌套映射存储在类似[{“menu”:{},“else”:{}的列表中。请注意,您需要将其转换为DynamoDB格式。我已经更新了答案,请查看。