假如 A中有一个Pointer对象B,序列化之后获取不到B的属性。
我是按照官网的「序列化反序列化」的教程处理带有Pointer对象的LCObject的,是我调用的有问题嘛?还是SDK本身没有实现,如果没有实现,大家有什么好的方案没?
谢谢。
---- UPDATE ----
环境
- Flutter : 2.2.3
- leancloud_storage : 0.7.2
AVOS数据结构
- Product:name, amount, category(pointer), user(pointer)
- Category: name
操作说明
- 按照官方文档序列化和反序列化的方法
- 自己编写了一个 fromJson函数来进行生成Model对象,发现在parseObject的时候Pointer对象的输出结果,见下方,是没有Category的name属性的
/// 序列化
LCQuery query = LCQuery("Product");
query.include("category");
LCObject? product = await query.first();
ProductItem productItem = ProductItem.fromJson(product.toString());
/// 在Model里的反序列化
/// ProductItem
factory ProductItem.fromJson(dynamic json) {
// 这里的Json 返回:
// {"className":"Product","objectId":"6124596312129479047f4cf3","createdAt":"2021-08-24 10:28:51.769","updatedAt":"2021-08-24 10:28:51.769","category":{"__type":"Pointer","className":"Category","objectId":"612458c012129479047f4c2e"},"amount":"20","name":"小白方","user":{"xxxxxxx"}}
LCObject lcObject = LCObject.parseObject(json);
return ProductItem(
objId: lcObject.objectId,
// 这里的categoryItem就没有name属性了
categoryItem: CategoryItem.fromJson(lcObject['category'].toString()),
name: lcObject['name'],
amount: lcObject['amount']
);
/// CategoryItem
factory CategoryItem.fromJson(dynamic json) {
LCObject lcObject = LCObject.parseObject(json);
return CategoryItem(lcObject.objectId, lcObject['name']);
}
当前&期望行为
- 当前:在CategoryItem中反序列化之后,就找不到['name']属性,因为从上层传递过来的Json是个Pointer类型的
- 期望:可以正常反序列化出来Category的name属性,这样使用productItem.categoryitem.name即能找到相关联的数据