Java 在googleappengine上返回空列表在dev服务器上和部署时的行为不同

Java 在googleappengine上返回空列表在dev服务器上和部署时的行为不同,java,json,google-app-engine,google-cloud-endpoints,google-cloud-platform,Java,Json,Google App Engine,Google Cloud Endpoints,Google Cloud Platform,我已经创建了一个端点,它返回一个项目列表。当列表为空时,我希望在JSON中看到一个空列表,但是列表字段被省略了。dev服务器上不会发生这种情况 例: 当它位于已部署的服务器上时,我得到的是: { kind: "udinicEndpoint#resourcesItem", etag: ""3Ms41gaYW9qnDr8JAXr8FIDhu9jVetg"" } 有什么想法吗?我怎样才能得到一致的行为?我希望得到一个空列表,而不是省略字段。预期的行为是,根据文档[1],将省略空列表: 返回的空列表将

我已经创建了一个端点,它返回一个项目列表。当列表为空时,我希望在JSON中看到一个空列表,但是列表字段被省略了。dev服务器上不会发生这种情况

例:

当它位于已部署的服务器上时,我得到的是:

{
kind: "udinicEndpoint#resourcesItem",
etag: ""3Ms41gaYW9qnDr8JAXr8FIDhu9jVetg""
}

有什么想法吗?我怎样才能得到一致的行为?我希望得到一个空列表,而不是省略字段。

预期的行为是,根据文档[1],将省略空列表:

返回的空列表将作为空列表到达客户端。 记得检查一下

因此,实际问题是开发服务器与生产不一致。作为开发服务器上一致性的解决方法,您可以添加空列表检查并返回null

return list.isEmpty() ? null : list;

[1]

我在Go运行时使用GCE时也遇到了同样的问题。在dev环境中,它似乎可以正常工作。但当部署到AppEngine上时,我的空阵列会被忽略。如果元素为NULL或值>0,则可以。也许需要为GCE打开一个bug报告。我也在Go运行时,遇到了同样的问题。我已经在GAE问题跟踪程序上打开了一个问题。请在这里随意评论和点评这个问题:python有什么相同之处?
{
kind: "udinicEndpoint#resourcesItem",
etag: ""3Ms41gaYW9qnDr8JAXr8FIDhu9jVetg""
}
return list.isEmpty() ? null : list;