我在App Engine中有以下java模型类:
public class Xyz ... {
@Persistent
private Set<Long> uvw;
}
在Java中保存一个Xyz且为空的uvw的对象时,我会得到一个“null”字段(如appengine datastore viewer中所列)。 当我尝试在Python中加载同一对象时(通过remote_api),如以下Python模型类所定义:
^{pr2}$我得到一个“BadValueError:Property uvw is required”。在
当用一个空的uvw列表在Python中保存同一类的另一个对象时,Datastore viewer会打印一个“缺少”字段。在
显然,空列表存储处理在Java和Python之间有所不同,并导致对象“不兼容”。在
因此,我的问题是:有没有办法:
或者关于如何处理两种语言中的空列表字段的任何其他建议。在
谢谢你的回答!在
Java的Set行为是因为Java的集合是引用类型,默认为null。在
要实际创建一个空集,请如下声明:
或者在右侧使用^{} 的其他实现。^{} 是最常用的集合类型。其他有趣的集类型是两个线程安全集^{} 和^{} ;还有有序集类型^{} 和排序集类型^{} 。在
如果为Python属性指定一个默认值,则应该可以使用:
我使用低级的javaapi,所以我所做的可能会有所不同。但在将集合类型的数据结构保存到数据存储之前,我将其转换为数据存储自然处理的内容。这将主要包括字符串和bytearray。在
听起来像是javaappengine将空集解释为空值。python没有正确地读取这个空值。您可以尝试将空集保存为字符串值“empty set”。然后让python检查数据存储是否包含该字符串值。如果有,它可以分配一个新的空集;如果没有,它可以将属性作为一个集来读取。在
相关问题 更多 >
编程相关推荐