JSONModel通用类

时间:2014-11-27 06:07:27

标签: java objective-c jsonmodel

我目前正在尝试将JSONModel包含到我正在处理的项目中...... 在这个项目中,我需要从Web服务获取数据,它始终返回相同的数据结构,但具有不同的条目... 所以我构建了一个基本的JSONModel类,它应该可以处理所有的响应。我看起来像这样:

@interface WebserviceResponse : JSONModel

@property (assign, nonatomic) BOOL success;
@property (assign, nonatomic) int code;
@property (strong, nonatomic) NSString *message;
@property (strong, nonatomic) NSString *timestamp;
@property (strong, nonatomic) NSArray *list;

@end

我从Web服务获得的数据总是在“list”中给出,并且始终是字典(但它与我调用的不同API方法不同)。除了错误之外,它是“空”......

如何定义此列表属性以简单地解析给定的词典? 使用给定的结构,我的对象始终为null:(

感谢您的帮助, Urkman

1 个答案:

答案 0 :(得分:0)

尝试使用BWJSONMatcher,按如下方式声明基本响应数据模型:

@interface WebserviceResponse : NSObject<BWJSONValueObject>

@property (assign, nonatomic) BOOL success;
@property (assign, nonatomic) int code;
@property (strong, nonatomic) NSString *message;
@property (strong, nonatomic) NSString *timestamp;
@property (strong, nonatomic) NSArray *list;

@end

对于每个API,声明一个从 WebserviceResponse 继承的响应模型,并覆盖协议 BWJSONValueObject 中的函数 typeInProperty:

// APIDataModel is the corresponding data model in "list" of this api
- (Class)typeInProperty:(NSString *)property {
    if ([property isEqualToString:@"list"]) {
        return [APIDataModel class];
    }

    return nil;
}

可以找到如何使用 BWJSONMatcher 的更详细示例here