JSONModel 接受对象和字符串

Posted

技术标签:

【中文标题】JSONModel 接受对象和字符串【英文标题】:JSONModel accept Object and String 【发布时间】:2013-11-14 17:46:48 【问题描述】:

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

【问题讨论】:

【参考方案1】:

我可能会接受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;

【讨论】:

如果无法解析对象,为什么不声明为NSString * 并设置为nil?这允许在访问字符串属性时更好地检查编译器。 我是 Objective c 的新手,并且学习了很多教程,但是我怎样才能完成这样的事情呢?它现在说 JSONModel 不支持 SongModel.artistLink 的属性类型。我在 Github 上的源代码中找到了这个://type not allowed - 程序员弄错了 -> exception @throw [NSException exceptionWithName:@"JSONModelProperty type not allowed" reason:[NSString stringWithFormat:@"Property type of %@.%@ is JSONModel 不支持。", self.className, p.name] userInfo:nil];【参考方案2】:

我通过以下方式修复它:

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

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

【讨论】:

以上是关于JSONModel 接受对象和字符串的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 使用JSONModel 1.0.1从JSONModel对象数组中获取字符串的类别

c_cpp 使用JSONModel 1.0.1从JSONModel对象数组中获取字符串的类别

c_cpp 使用JSONModel 1.0.1从JSONModel对象数组中获取字符串的类别

c_cpp 使用JSONModel 1.0.1从JSONModel对象数组中获取字符串的类别

c_cpp 使用JSONModel 1.0.1从JSONModel对象数组中获取字符串的类别

c_cpp 使用JSONModel 1.0.1从JSONModel对象数组中获取字符串的类别