Java 如何在Google云数据存储中添加数组属性值

Java 如何在Google云数据存储中添加数组属性值,java,google-cloud-datastore,Java,Google Cloud Datastore,如何将字符串或int数组添加到属性值? 这是我的代码,但不起作用 while(i<ValueArray.length) { entityBuilder.addProperty(Property.newBuilder() .setName(name)) .setValue(Value.newBuilder

如何将字符串或int数组添加到属性值? 这是我的代码,但不起作用

   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());
}