用于appengine端点实体的自定义JSON密钥

时间:2014-06-12 06:57:54

标签: google-app-engine google-cloud-endpoints

我一直在搜索这个问题,我很确定我在关键字中使用了错误的术语。所以这是一个展示我想做的事情的例子:

我有一个Entity定义为

@Entity 
public class DeviceRecord {
    @Id private    String id;
    private        String apikey;
    @Index private String description;
}

当我在@ApiMethod这样的

中使用它时
@ApiMethod
public DeviceRecord login (final HttpServletRequest request, final String id) {
    return doSomethingThatGeneratesADeviceRecord(request, id);
}

我在客户端上取回了以下JSON:

{
  "id" : "did1234567",
  "apikey" : "apikey",
  "description" : "Bob"
}

我想使用较短的密钥来减少开销并获得类似下面的内容

{
  "id" : "did1234567",
  "ak" : "apikey",
  "dn" : "Bob"
}

如何对这些字段进行注释,以便使用自定义键而不是默认字段名称对它们进行反序列化?

感谢。

更新(答案):

@Entity 
public class DeviceRecord {
    @Id @APIResourceProperty (name = "id" )    private String id;
    @APIResourceProperty (name = "ak" )        private String apikey;
    @Index @APIResourceProperty (name = "dn" ) private String description;
}

1 个答案:

答案 0 :(得分:1)

请查看@APIResourceProperty注释。这允许您使用自己的自定义属性名称注释实体的属性。

文档在这里:https://developers.google.com/appengine/docs/java/endpoints/annotations#apiresourceproperty

例如在您的实体中的getAPIKey()方法上,您可以添加以下注释:@ApiResourceProperty(name = "ak"),依此类推。