我正在发送 List<Item>
通过谷歌云端点从谷歌应用引擎(java)到javascript。
Item
:
public class Item implements Serializable {
private String item1;
private Integer item2;
private String item3;
//(...) item (4-39)
private String item40;
//Constructor, Getters, setters, +functions
}
在 javascript 中,我收到每个项目具有以下结构的数据:
{item1:"v1",item2:"v2"}
此外,在每个对象的末尾,我收到了很多我不明白为什么发送的数据。
“?”数据不是我定义的函数。我认为它是可序列化的对象函数,但我不明白为什么要发送。
我需要以这种格式发送数据:{"v1","v2"}
而不是{item1:"v1",item2:"v2", a lot of functions}
减少数据大小。
我想解决List<String>
中发送数据的问题 java 。
但它有点复杂和“丑陋”,因为例如 Item
的一些属性对象是结构化对象。
谷歌云端点中是否有描述以这种方式发送数据的方法?
有没有办法设置端点只发送“必要”的数据?
最佳答案
首先我要说的是,我认为这不是一个好主意,但是您可以使用转换器来控制对象的序列化方式。但是,如果您使用生成的客户端库,您将丢失所有信息——它们只会将事物视为字符串列表。端点应该自动为您压缩东西,这应该有助于节省大量带宽。您应该进行测量,比较两个 5000 的完整列表,并查看到底节省了多少带宽。请记住,端点也不会传输空属性,因此如果许多属性未全部设置,您会自动节省带宽。
参见this page有关如何使用变压器的详细信息。基本上,你想要一个 class ItemTransformer implements Transformer<Item, List<String>>
并附有相关注释。
关于java - 使用 Google 云端点进行数据传输优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28322902/