RestKit 0.2:在JSON中展平层次结构

时间:2012-12-20 18:20:25

标签: ios core-data restkit

也许这里有类似的问题,但我找不到它。所以我有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”对象分别存储在数据库中 - 这没有意义。因此,我想将这些嵌套的东西(location.position.latitude和location.position.longitude)分配给对象本身的特定属性。如何实现?

2 个答案:

答案 0 :(得分:1)

显然,我做了一个狂野的屁股猜测,它的确有效!这是诀窍的映射:

[placeMapping addAttributeMappingsFromDictionary:@{
     @"id": @"placeId",
     @"name": @"name",
     @"location.position.latitude": @"latitude",
     @"location.position.longitude": @"longitude"     
     }];

在文档中没有找到这个,但也许只是我...无论如何,如果某些逻辑但没有文档的工作,那么框架应该是好的。 :) RestKit FTW!

答案 1 :(得分:0)

您可以使用

将包含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'对象并保留它。

希望有所帮助!