相关疑难解决方法(0)

DynamoDB JsonMarshaller无法反序列化对象列表

我有一个Java类,它是DynamoDB中表的数据模型.我想使用Dynamo中的DynamoDBMapperto saveloaditems.该班的一名成员是List<MyObject>.所以我用它JsonMarshaller<List<MyObject>>来序列化和反序列化这个字段.

该列表可以通过成功序列化JsonMarshaller.但是,当我尝试检索条目并读取列表时,它会抛出异常:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to MyObject.看起来JsonMarshaller将数据反序列化为LinkedHashMap而不是MyObject.我该怎样摆脱这个问题?

MCVE:

// Model.java
@DynamoDBTable(tableName = "...")
public class Model {
  private String id;
  private List<MyObject> objects;

  public Model(String id, List<MyObject> objects) {
    this.id = id;
    this.objects = objects;
  }

  @DynamoDBHashKey(attributeName = "id")
  public String getId() { return this.id; }
  public void setId(String id) { this.id = id; }

  @DynamoDBMarshalling(marshallerClass = ObjectListMarshaller.class)
  public …
Run Code Online (Sandbox Code Playgroud)

java jackson amazon-dynamodb

12
推荐指数
3
解决办法
1万
查看次数

用于不带注释的 DynamoDB 文档字段的 DynamoDBTypeConverter

我在 DynamoDB 中有一些条目,其中的字段如下,采用 DynamoDB 文档格式:

{ "foo" : { "N" : "45" }, "bar" : { "N" : "12" }}

我有一个代表文档类型的 Java 类:

public class FooBar {
  private final int foo;
  private final int bar;

  public FooBar(
      int foo,
      int bar
  ) {
    this.foo = foo;
    this.bar = bar;
  }

  public int getFoo() {
    return foo;
  }

  public int getBar() {
    return bar;
  }
}
Run Code Online (Sandbox Code Playgroud)

我想使用DynamoDB 映射器来获取行并将其放入表中(为简洁起见,省略了表示整行的中间类)。我不想将 DynamoDB 注释(等)添加@DynamoDBDocument@DynamoDBAttribute类中FooBar,因为它们需要零参数构造函数和 setter 方法,但这应该是不可变的数据对象。

因此,我想使用 …

java amazon-dynamodb

4
推荐指数
1
解决办法
5564
查看次数

标签 统计

amazon-dynamodb ×2

java ×2

jackson ×1