Dan*_*Dan 6 serialization json objective-c deserialization
我将JSON格式的数据从Web服务器映射到Objective C类(在Xcode中建模的NSManagedObjects,由Core Data处理).对于Objective C类的每个属性,我需要:
现在,我正在为每个属性对这个序列进行硬编码,因此每个属性都需要如下代码:
// dictObject is the JSON object converted into a NSDictionary,
// and person is the instance of the modeled class
if ([dictObject objectForKey:@"nameFirst"] &&
[dictObject objectForKey:@"nameFirst"] != [NSNull null]) {
person.nameFirst = [dictObject objectForKey:@"nameFirst"];
}
Run Code Online (Sandbox Code Playgroud)
除了需要大量代码来处理各种类之外,这看起来很奇怪而且很脆弱:任何名称更改(或语言本地化)都会导致映射失败.
必须有一个更好的方法......我错过了什么?
Wol*_*urs 11
要处理NULL值,请在NSDictionary上使用类别.我使用的类别如下:
的NSDictionary + Utility.h
#import <Foundation/Foundation.h>
@interface NSDictionary (Utility)
- (id)objectForKeyNotNull:(id)key;
@end
Run Code Online (Sandbox Code Playgroud)
的NSDictionary + Utility.m
#import "NSDictionary+Utility.h"
@implementation NSDictionary (Utility)
- (id)objectForKeyNotNull:(NSString *)key {
id object = [self objectForKey:key];
if ((NSNull *)object == [NSNull null] || (CFNullRef)object == kCFNull)
return nil;
return object;
}
@end
Run Code Online (Sandbox Code Playgroud)
从您的JSON字典中检索任何值,如下所示:
NSString *stringObject = [jsonDictionary objectForKeyNotNull:@"SomeString"];
NSArray *arrayObject = [jsonDictionary objectForKeyNotNull:@"SomeArray"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8192 次 |
| 最近记录: |