Amazon dynamodb DynamoDB对象集插入和获取

Amazon dynamodb DynamoDB对象集插入和获取,amazon-dynamodb,aws-cli,dynamodb-queries,Amazon Dynamodb,Aws Cli,Dynamodb Queries,我有下面的DynamoDB表 @Builder @DynamoDBTable(tableName = "rule_templates") @Setter @NoArgsConstructor @AllArgsConstructor public class DynamoRuleTemplate { private String id; private DataType dataType; private String displayName; private St

我有下面的DynamoDB表

@Builder
@DynamoDBTable(tableName = "rule_templates")
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class DynamoRuleTemplate {
    private String id;
    private DataType dataType;
    private String displayName;
    private String helpText;
    private String expression;
    private Set<Param> params;

    @DynamoDBHashKey(attributeName = "id")
    public String getId() {
        return id;
    }

    @DynamoDBAttribute(attributeName = "data_type")
    public DataType getDataType() {
        return dataType;
    }

    @DynamoDBAttribute(attributeName = "display_name")
    public String getDisplayName() {
        return displayName;
    }

    @DynamoDBAttribute(attributeName = "help_text")
    public String getHelpText() {
        return helpText;
    }

    @DynamoDBAttribute(attributeName = "expression")
    public String getExpression() {
        return expression;
    }

    @DynamoDBTypeConverted(converter = ParamSet.class)
    @DynamoDBAttribute(attributeName = "params")
    public Set<Param> getParams() {
        return params;
    }
}
我正在通过AWS CLI用json格式的一些数据预填充表格,如:

{
  "id": {
    "S": "string-length-range"
  },
  "data_type": {
    "S": "STRING"
  },
  "display_name": {
    "S": "String length range"
  },
  "expression": {
    "S": "$val.length() <= $max && $val.length() >= $min"
  },
  "help_text": {
    "S": "String length range"
  },
  "params": {
    "L": [
      {
        "M": {
          "dataType": {
            "S": "INTEGER"
          },
          "displayName": {
            "S": "max"
          },
          "identifier": {
            "S": "$max"
          }
        }
      },
      {
        "M": {
          "dataType": {
            "S": "INTEGER"
          },
          "displayName": {
            "S": "min"
          },
          "identifier": {
            "S": "$min"
          }
        }
      }
    ]
  }
}
{
“id”:{
“S”:“字符串长度范围”
},
“数据类型”:{
“S”:“字符串”
},
“显示名称”:{
“S”:“字符串长度范围”
},
“表达”:{
“S”:“$val.length()=$min”
},
“帮助文本”:{
“S”:“字符串长度范围”
},
“参数”:{
“L”:[
{
“M”:{
“数据类型”:{
“S”:“整数”
},
“显示名称”:{
“S”:“max”
},
“标识符”:{
“S”:“$max”
}
}
},
{
“M”:{
“数据类型”:{
“S”:“整数”
},
“显示名称”:{
“S”:“min”
},
“标识符”:{
“S”:“$min”
}
}
}
]
}
}
但是,在使用JAVA应用程序从表中获取数据时,我得到了以下关于params字段的错误:com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException:value{L:[{m:{identifier={S:$max,},displayName={S:max,},dataType={S:INTEGER,},},},{m:{identifier={S:$min,},displayName={S:min,},数据类型={S:INTEGER,},规则={M:{expression={S:$min>=0,}},},},},}],}


有人能帮我找到正确的json,这样我就不会出现上述错误吗?

在DynamoRuleTemplate类中,我可以看到类中的类型与您提供的json之间不匹配。因此,在DynamorDB json中,属性dataType是string(“S”),但方法getDataType()正在返回未将@DynamoDBTypeConverted转换为将字符串转换为的数据类型DataType@AravindReddyP:我的主要问题是关于json,
params
字段以L开头,而我希望它是JAVA类
DynamoRuleTemplate
{
  "id": {
    "S": "string-length-range"
  },
  "data_type": {
    "S": "STRING"
  },
  "display_name": {
    "S": "String length range"
  },
  "expression": {
    "S": "$val.length() <= $max && $val.length() >= $min"
  },
  "help_text": {
    "S": "String length range"
  },
  "params": {
    "L": [
      {
        "M": {
          "dataType": {
            "S": "INTEGER"
          },
          "displayName": {
            "S": "max"
          },
          "identifier": {
            "S": "$max"
          }
        }
      },
      {
        "M": {
          "dataType": {
            "S": "INTEGER"
          },
          "displayName": {
            "S": "min"
          },
          "identifier": {
            "S": "$min"
          }
        }
      }
    ]
  }
}