Google云数据存储运行查询获取日期变量?

时间:2013-08-26 04:51:47

标签: java google-cloud-datastore

我正在使用java。这是我的代码

RunQueryResponse response = dataset.runQuery("project_name", queryrequest).execute();

和response.tostring()。我有我想要的所有查询,但有很多。 如何获得每个字段的单个值。就像把它放在一个数组或我们可以调用for循环或interator的东西。 感谢

----添加代码-------- 这里有一些我的代码:

 Iterator<EntityResult> entity_interator = response.getBatch().getEntityResults().iterator();
Map<String, Property> entity;
while(entity_interator.hasNext()){
    entity = entity_interator.next().getEntity().getProperties();
    String first = entity.get("First").toString();
    String last = entity.get("Last").toString();
    String time = entity.get("Time").toString();        
    System.out.println(first);
    System.out.println(last);
    System.out.println(time);
}

并回复:

{"values":[{"stringValue":"first name"}]}
{"values":[{"stringValue":"last name"}]}
{"values":[{"dateTimeValue":"2013-08-28T08:21:58.498Z"}]}

我怎样才能得到时间作为日期时间变量,名字和姓氏没有{“values”:[{“stringValue”:“和所有垃圾事件。

1 个答案:

答案 0 :(得分:0)

每个Property可能包含一个或多个Value个对象,每个Value可以包含多个不同值类型之一(每个类型都有自己的字段)。如果您的属性是单值的,您可以从列表中选择第一个:

Iterator<EntityResult> entity_interator = response.getBatch().getEntityResults().iterator();
Map<String, Property> entity;
while(entity_interator.hasNext()){
    entity = entity_interator.next().getEntity().getProperties();

    String first = entity.get("First").getValues().get(0).getStringValue();
    String last = entity.get("Last").getValues().get(0).getStringValue();
    DateTime dateTime = entity.get("Time").getValues().get(0).getDateTimeValue();
    Date time = new Date(dateTime.getValue());

    System.out.println(first);
    System.out.println(last);
    System.out.println(time);
}

请注意,这是使用JSON APIfull JavaDoc reference)的示例。 Google Cloud Datastore docs中的示例正在使用Protocol Buffers API,它以相同的方式构造,但语法略有不同。