NSObject+AMapJsonSerialization.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //
  2. // NSObject+JsonAutoSerialize.h
  3. // AMapFoundation
  4. //
  5. // Created by zhou on 2018/2/1.
  6. // Copyright © 2018年 Amap.com. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. // 网络自动化解析数组定义宏
  10. #define AMapJsonArray(key,type) NSArray <type *> *key; \
  11. @property (nonatomic, strong, readonly) type *__Array__##key
  12. #define AMapJsonMutableArray(key,type) NSMutableArray <type *> *key; \
  13. @property (nonatomic, strong, readonly) type *__Array__##key
  14. #define AMapNestedArray(key,type) NSArray *key; \
  15. @property (nonatomic, strong, readonly) type *__Array__##key
  16. #define AMapNestedMutableArray(key,type) NSMutableArray *key; \
  17. @property (nonatomic, strong, readonly) type *__Array__##key
  18. //#define AMapBind(key,propertyName,type) *key; \
  19. //@property (nonatomic, strong, readonly) type *__Bind__##propertyName##__##key
  20. @protocol AMapJsonManualSerialization <NSObject>
  21. @optional
  22. - (void)manualDeserializationJsonData:(NSDictionary *)jsonDictionary forInfo:(id)customInfo;
  23. - (NSMutableDictionary *)manualSerializeObjectForInfo:(id)customInfo;
  24. @end
  25. @interface NSObject (AMapJsonSerialization)
  26. // 反序列化自动解析Json数据,并根据和dictionaryJson的key匹配的属性名进行自动赋值,注意dictionaryJson需要和对象对应,注意只有非基础类型属性的解析才会回调手动解析(需实现AMapManuallParseJson协议)
  27. - (void)amf_deserializationJsonData:(NSDictionary *)dictionaryJson forInfo:(id)customInfo;
  28. // 将Module数据对象序列化成Json数据对象的Dictionary,对于NSString、NSMutableArray、NSNumber、NSNull、NSArray和NSMutableArray会返回nil
  29. - (NSMutableDictionary *)amf_serializeJsonObjectForInfo:(id)customInfo;
  30. // 将NSArray或NSMutableArray序列化成Json数据对象的数组,仅适用于是NSArray和NSMutableArray类型的对象调用,否则会返回nil
  31. - (NSMutableArray *)amf_serializeJsonArrayForInfo:(id)customInfo;
  32. @end