Java 如何在Google云数据存储中添加数组属性值
如何将字符串或int数组添加到属性值? 这是我的代码,但不起作用Java 如何在Google云数据存储中添加数组属性值,java,google-cloud-datastore,Java,Google Cloud Datastore,如何将字符串或int数组添加到属性值? 这是我的代码,但不起作用 while(i<ValueArray.length) { entityBuilder.addProperty(Property.newBuilder() .setName(name)) .setValue(Value.newBuilder
while(i<ValueArray.length)
{
entityBuilder.addProperty(Property.newBuilder()
.setName(name))
.setValue(Value.newBuilder().setStringValue(ValueArray[i])));
i++;}
while(i您可以为此使用列表值:
Value.Builder listValueBuilder = Value.newBuilder();
for (String value : values) {
listValueBuilder.addListValue(Value.newBuilder().setStringValue(value));
}
entityBuilder.addProperty(Property.newBuilder()
.setName(name)
.setValue(listValueBuilder));
或者,使用DatastoreHelper
中的方便方法:
Value.Builder[] valueArray = new Value.Builder[values.length];
for (int i = 0; i < values.length; i++) {
valueArray[i] = DatastoreHelper.makeValue(values[i]);
}
entityBuilder.addProperty(
DatastoreHelper.makeProperty(name, DatastoreHelper.makeValue(valueArray)));
或者,再次使用DatastoreHelper
:
Map<String, Value> propertyMap = DatastoreHelper.getPropertyMap(entity);
for (Value value : propertyMap.get(name).getListValueList()) {
// Print each string value from the list value.
System.out.println(value.getStringValue());
}
MapPropertyMap=DatastoreHelper.getPropertyMap(实体);
for(值:propertyMap.get(name).getListValueList()){
//打印列表值中的每个字符串值。
System.out.println(value.getStringValue());
}
谢谢。它正在工作。我还有一个问题,如何再次获取它们?我正在尝试if(entity.getProperty(I).getValue().hasStringValue())entity.getProperty(I).getValue().getStringValue();但它不起作用。顺便说一下,我正在使用您的第一个代码设置值列表。我在答案中添加了示例代码。字符串值嵌套在列表值中。
Map<String, Value> propertyMap = DatastoreHelper.getPropertyMap(entity);
for (Value value : propertyMap.get(name).getListValueList()) {
// Print each string value from the list value.
System.out.println(value.getStringValue());
}