1

我的 SongModel.h 中有这个:

@interface SongModel : JSONModel
@property (strong, nonatomic) NSString *title;
@property (strong, nonatomic) NSString *artist;
@property (strong, nonatomic) NSDate *start;
@property (strong, nonatomic) NSDate *end;
@property (strong, nonatomic) NSString<Optional> *artistLink;
@property (strong, nonatomic) NSString<Optional> *songLink;
@end

因为artistLink 和songLink 在(不是我的)JSON 中格式不正确。它可以是字符串或空对象,我该如何解析?

JSONModel 不支持“id”类型

4

2 回答 2

0

我通过以下方式修复了它:

NSRegularExpression *replaceEmptyObject = [NSRegularExpression regularExpressionWithPattern:@"{}/g" options:0 error:nil];
jsonString = [replaceEmptyObject stringByReplacingMatchesInString:jsonString options:0 range:NSMakeRange(0, [jsonString length]) withTemplate:@"\"\""];

也许不是最美丽的方式,但它对我有用。这些是这个 json 中唯一的空对象。

于 2013-11-14T19:17:09.930 回答
0

我可能会接受id然后将其设置为[NSNull null]无法解析的时间,或者将其设置为NSString可以解析的时间。

@property (strong, nonatomic) id artistLink;

if (canBeParsed) {
    artistLink = @"The string";
} else {
    artistLink = [NSNull null];
}

编辑:Martin R. 提出了一个很好的观点,这当然是另一种方式。

@property (strong, nonatomic) NSString *artistLink

if (canBeParsed) {
    artistLink = @"The string";
} else {
    artistLink = nil;
}
于 2013-11-14T17:57:51.770 回答