0

我目前正在尝试将 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 服务获得的数据总是在“列表”中给出,并且总是一个字典(但它与我调用的不同 API 方法不同)。除非出现错误,否则它是“null”...

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

感谢您的帮助,乌克曼

4

1 回答 1

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的更多详细示例。

于 2015-11-10T07:55:39.163 回答