AWS DynamoDB-将JSON数组保存到表中(Java/Android)
如何将JSON数组保存为item属性?AWS文档是有史以来最糟糕的事情-它自相矛盾,很多事情要么是多余的,要么只是部分解释,有些事情根本没有解释-我不知道任何人是如何使用它的 无论如何,假设我有一个名为path的表,path有一个名称、一个ID和一个latlng列表(格式为JSON数组) 在这个表的类定义中,我有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
@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