AWS DynamoDB-将JSON数组保存到表中(Java/Android)

AWS DynamoDB-将JSON数组保存到表中(Java/Android),java,android,json,amazon-web-services,amazon-dynamodb,Java,Android,Json,Amazon Web Services,Amazon Dynamodb,如何将JSON数组保存为item属性?AWS文档是有史以来最糟糕的事情-它自相矛盾,很多事情要么是多余的,要么只是部分解释,有些事情根本没有解释-我不知道任何人是如何使用它的 无论如何,假设我有一个名为path的表,path有一个名称、一个ID和一个latlng列表(格式为JSON数组) 在这个表的类定义中,我有 @DynamoDBTable(tableName = "Paths") public class Path { private String id; private Strin

如何将JSON数组保存为item属性?AWS文档是有史以来最糟糕的事情-它自相矛盾,很多事情要么是多余的,要么只是部分解释,有些事情根本没有解释-我不知道任何人是如何使用它的

无论如何,假设我有一个名为path的表,path有一个名称、一个ID和一个latlng列表(格式为JSON数组)

在这个表的类定义中,我有

@DynamoDBTable(tableName = "Paths")
public class Path {
  private String id;
  private String name;
  private JSONArray outlineJSON;
像这样的能手和二传手

@DynamoDBRangeKey(attributeName = "name")
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}
这对字符串、布尔值和数字都适用,并且对象成功保存到表中。 AWS文档多次提到JSON,并说它可以处理列表,但没有解释如何使用列表或给出任何示例。 我用@DynamoDBHashKey作为id,@DynamoDBRangeKey作为name,用@DynamoDBAttribute作为其他字符串、数字或布尔值,我在这里试过了

@DynamoDBAttribute(attributeName = "outline")
private JSONArray getOutlineJSON() {
    return outlineJSON;
}

private void setOutlineJSON(JSONArray outlineJSON) {
    this.outlineJSON = outlineJSON;
}
它成功保存了对象,但未保存数组

如何保存阵列?我到处找不到解释。我认为@DynamoDBDocument可能与此有关,但所有关于此主题的文档都给出了不相关的示例,我找不到任何使用类似我的情况的列表的例子


编辑:目前,我有一个可行的解决方案-我可以轻松地将列表转换为JSONArray,然后将它们转换为字符串,反之亦然。

您可以将类定义为

@DynamoDBTable(tableName = "Paths")
public class Path {
  private String id;
  private String name;
  private LatLang latLangs;

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

  @DynamoDBRangeKey(attributeName = "name")
  public String getName() { return name; }
  public void setName(String name) { this.name = name; }

  @DynamoDBDocument
  public static class LatLang{
       public String lat;
       public String lang;
  }
}

我可能已经取得了一些进展-我从一些类似的示例中收集到,我可能能够在开始时使用DynamoDBDocument注释定义一个自定义对象类,并且只保存一个属性,该属性是这些对象的列表。。。目前还不起作用,但我认为这更接近于答案……您使用的是aws sdk for java还是aws sdk for android?我不知道有什么区别,因为android是java。这在AWS文档中肯定不清楚。。。我猜是安卓?从我的示例代码中是否不明显?如果有帮助的话,我正在使用dynamodb映射器来保存和扫描表,但正如我所说的,它只适用于字符串、数字和布尔属性。WS有Java和Android的SDK,两者略有不同。那么我应该有一个属性,它是这个自定义类(LatLng)实例的列表或JSONArray吗?如果你不想拥有一个类,你也可以拥有一个hashmap