JSONModel接受Object和String

时间:2013-11-14 17:46:48

标签: objective-c xcode macos jsonmodel

我在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”类型

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

我修理了:

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

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