使用AWS CLI将使用Json文件的项目放入AWS DynamoDB中

使用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 CLI和以下命令在dynamo DB中放置以下JSON时:

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格式。我已经更新了答案,请查看。