developer
2023-05-20 e12c7b4c22df631ebdcd16b2f98fbef8f738f92f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
 * AlibcJSONModel.h 
 *
 * 阿里百川电商
 * 项目名称:阿里巴巴电商 AlibcTradeBiz 
 * 版本号:4.0.0.9
 * 发布时间:2019-10-31
 * 开发团队:阿里巴巴商家服务引擎团队
 * 阿里巴巴电商SDK答疑群号:1488705339  2071154343(阿里旺旺)
 * Copyright (c) 2016-2020 阿里巴巴-淘宝-百川. All rights reserved.
 */
 
#import <Foundation/Foundation.h>
#import "NSArray+AlibcJSONModel.h"
#import "NSDictionary+AlibcJSONModel.h"
#import "AlibcJSONModelKeyMapper.h"
#import "AlibcJSONModelProperty.h"
#import "AlibcJSONModelError.h"
 
/*
 AlibcJSONModel是json model的基类,其存在的作用是实现model属性和json之间的映射,以及自动设置等工作,使得上层model只需要声明其属性,而无需知道这些属性如何进行设置的。
 
 因为json数据中有些key和objc中的一些关键字或者属性方法名存在冲突,所以引入了一个keyMapper的概念,把json的key和model的属性名建立一个映射。
 
 model进行初始化的时候使用了一些objc rutime的功能,比如获取当前model的所有属性信息,然后再通过这些属性信息以及KVC的方式为其设置属性值。为了性能的考虑,将这些属性信息设置为model class object的关联对象,下次获取的时候直接从class object的关联对象中获取。
*/
 
@interface AlibcJSONModel : NSObject
 
+ (id)modelWithJSONDictionary:(NSDictionary *)dict;
+ (id)modelWithJSONDictionary:(NSDictionary *)dict error:(NSError **)error;
 
- (id)initWithJSONDictionary:(NSDictionary *)dict;
- (id)initWithJSONDictionary:(NSDictionary *)dict error:(NSError **)error;
 
- (void)updateWithJSONDictionary:(NSDictionary *)dict;
 
- (NSDictionary *)toJSONDictionary;
 
- (void)setTreatBoolAsStringWhenModelToJSON:(BOOL)treatBoolAsStringWhenModelToJSON;
 
+ (AlibcJSONModelKeyMapper *)modelKeyMapper;
 
//此Dictionary的key为json对应的字段名,value为Model对应的属性名
+ (NSDictionary *)jsonToModelKeyMapDictionary;
 
 
//此Dictionary可以用来描述model容器中元素对应的类@{"propertyNameA":ClassA}
+ (NSDictionary *)modelContainerClassMapDictioanry;
 
//返回主动忽略的属性名的列表
+ (NSArray *)ignoredPropertyNames;
 
//当strictMode为YES的时候,json dictionary中的数据类型如果无法转换成对应的属性类型,则此属性不被设置,默认为NO
+ (BOOL)strictMode;
 
@end