YYModel icon indicating copy to clipboard operation
YYModel copied to clipboard

Model转JSON字段丢失问题

Open papfish opened this issue 6 years ago • 2 comments

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

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

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

papfish avatar May 09 '18 02:05 papfish

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

kinarobin avatar May 11 '18 12:05 kinarobin

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

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

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

HungryFour avatar Jan 24 '19 06:01 HungryFour