ibireme/YYModel

Model转JSON字段丢失问题

papfish opened this issue · 2 comments

  1. 首先把JSON转Model,转换正常。有自定义属性映射如下:
+ (NSDictionary *)modelCustomPropertyMapper {
    return @{@"name": @"uid"};
}
  1. 然后再把这个转换后的model转换成JSON字符串、或者字典,都会丢失name字段。或者说,name字段名变成了uid。model中没有定义uid这个属性 🤣

其他属性映射也有类似问题,如@{@"desc": @"detail.desc"};,此时model再转JSON,desc也丢失了。

应该跟作者用到的缓存策略有关系,待研究...

@xuliang2015 丢失属性是因为 当在递归的时候发现这个模型对应的属性为空的时候,直接返回了,没有走
if (!dic[propertyMeta->_mappedToKey]) { dic[propertyMeta->_mappedToKey] = value; }
这个方法,导致字典里面没有这个key

@xuliang2015 序列化和反序列化,都会进行rename的操作。 如果字段不多,可在

- (BOOL)modelCustomTransformToDictionary:(NSMutableDictionary *)dic {
    if (!_name) return NO;
    dic[@"uid"] = _name;
    return YES;
}

中进行一些自动转换不能完成的操作。