例如-我有这个实体:
class XdUser(entity: Entity) : XdEntity(entity) {
var someName by xdStringProp()
var someNumber by xdIntProp()
}
从/到json序列化/反序列化的正确方法是什么? 我必须创建仅复制实体字段的数据类,然后将值传播到XdUser吗?还是有其他方法?
答案 0 :(得分:0)
将XdUser序列化为JSON,您应该确保序列化程序不会处理XdUser#entity
和其他可能暴露大量不必要数据的公共链接。反序列化带来了另一个问题,因为应该告知反序列化器如何使用构造函数XdUser(entity: Entity)
从json实例化一个类。
从我可能的更好选择中,还有一个其他级别的Rest API。它具有控制公开数据量,控制权限(如果有的话)和实体更新方式的功能。
Rest api级别的实现如下:
open class EntityVO<T: XdEntity>(xdId: String?) {
}
class UserVO(xdId: String?): EntityVO<XdUser>(xdId: String?) {
var someName by delegateTo(XdUser::someName)
var someNumber by delegateTo(XdUser::someNumber)
}
和delegateTo
应该提供委托,该委托将通过xdId查找XdUser,并使用指定的XdUser属性获取/设置值。对于链接/链接,逻辑将更加复杂,但思想可以相同。