RestKit 0.2:扁平化 JSON 中的层次结构
Posted
技术标签:
【中文标题】RestKit 0.2:扁平化 JSON 中的层次结构【英文标题】:RestKit 0.2: flattening the hierarchy in JSON 【发布时间】:2012-12-20 18:20:24 【问题描述】:也许这里有一个类似的问题,但我找不到。所以我有 RestKit 0.2pre4 并想映射这样的 JSON ...
"location":
"position":
"latitude": 53.9675028,
"longitude": 10.1795594
,
"id": "da3224f2-5919-42f2-9dd8-9171088f4ad7",
"name": "Something even more beautiful",
...对这样一个对象:
@interface FavoritePlace : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * placeId;
@property (assign, nonatomic) double latitude;
@property (assign, nonatomic) double longitude;
@end
如您所见,关键是我不想创建关系并将“位置”对象单独存储在数据库中——这没有任何意义。因此,我想将那些嵌套的东西(location.position.latitude 和 location.position.longitude)分配给对象本身的特定属性。如何实现?
【问题讨论】:
【参考方案1】:显然,我做了一个疯狂的猜测,它成功了!这是解决问题的映射:
[placeMapping addAttributeMappingsFromDictionary:@
@"id": @"placeId",
@"name": @"name",
@"location.position.latitude": @"latitude",
@"location.position.longitude": @"longitude"
];
还没有在文档中找到这个,但也许只是我......无论如何,如果有一些合乎逻辑但没有记录的东西有效,那么框架应该是好的。 :) RestKit FTW!
【讨论】:
【参考方案2】:您可以将包含 json 字符串的字符串传递给 nsdata
NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
然后,您将能够使用 ios API 解析 de json 数据
NSError *error;
NSDictionary *json = jsonData ? [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error] : nil;
现在,检查生成的 NSDictionary(例如使用 NSlog),填充您的“FavoritePlace”对象并将其持久化。
希望有所帮助!
【讨论】:
感谢您的回答,但如果可能的话,我更愿意留在 RestKit 领域。开始摆弄原始 JSON 会破坏使用 RestKit 的整个目的,恕我直言...... Oki,因此我无法帮助你 xD。祝你好运! 您为什么不查看您的 3rd 方框架的文档?如果功能和文档不令人满意,请放弃。以上是关于RestKit 0.2:扁平化 JSON 中的层次结构的主要内容,如果未能解决你的问题,请参考以下文章
使用 RestKit 0.2 从 CoreData 获取本地数据
RestKit 0.2 映射 Core Data <--> JSON 与一对多关系
iOS RestKit 0.2 解析本地 Json 的最佳方法是啥