用于 JSON 解析的 NSDictionary 或自定义 NSObject

Posted

技术标签:

【中文标题】用于 JSON 解析的 NSDictionary 或自定义 NSObject【英文标题】:NSDictionary or custom NSObject for JSON parsing 【发布时间】:2012-09-05 20:54:55 【问题描述】:

我看到很多人使用NSDictionary 进行 JSON 解析:

//ViewController.m
NSString* forename = [jsonDict valueForKey:@"forename"];
NSString* surname = [jsonDict valueForKey:@"surname"];

但我也有人从 NSDictionary 创建自定义 NSObjects。

//JSONObject.h
@interface JSONObject : NSObject

@property (nonatomic) NSString* forename;
@property (nonatomic) NSString* surname;
@end

//JSONObject.m
@implementation JSONObect

@synthesize forename = _forename;
@synthesize surname = _surname;

@end

//ViewController.m
JSONObject* jsonObject = [[JSONObject alloc] init];
[jsonObject setForename:[jsonDict valueForKey:@"forename"]];
[jsonObject setSurname:[jsonDict valueForKey:@"surname"]];

然后将这些存储在NSMutableArray:

NSMutableArray* jsonObjectsArray = [NSMutableArray arrayWithCapacity:20];
[jsonObjectsArray addObject:jsonObject];

如果需要,以后可以访问。

就我而言,我有一个 UITableView 从 JSON 获取数据。数据至少使用一次,但很可能会使用更多(例如,在设备轮换中)。 JSON 数据不应永久存储到文件中,因为它会定期更新并在每次应用启动时下载。

我应该在我的场景中使用自定义NSObject 还是NSDictionary

【问题讨论】:

我让这个问题听起来更像是一个讨论问题而不是问答,希望我的编辑让它变得更好。 【参考方案1】:

使用自定义对象的一个​​理由是,它距离使用 NSManagedObject 仅几步之遥,它可以让您利用 Core Data 来管理您的对象图。

【讨论】:

自定义对象在存储方面也可以说更紧凑。【参考方案2】:

使用 NSDictionary 的理由是它更简单、更易于理解,并且您定义的“次要”类(和相关的 h/m 文件)更少,因此在项目中管理的更少。在“不断变化”的项目中编辑/扩展也容易得多。

【讨论】:

以上是关于用于 JSON 解析的 NSDictionary 或自定义 NSObject的主要内容,如果未能解决你的问题,请参考以下文章

使用 AFNetworking 将 JSON 解析为 NSDictionary

NSDictionary - 从返回的 JSON 服务中解析项目

将 json 解析为 NSDictionary [关闭]

理解 JSON 解析为 NSDictionary [重复]

将此数据从 JSON 解析为 NSDictionary [重复]

无法将 json 字符串解析为 nsdictionary