如何在休息套件中解析此响应?

Posted

技术标签:

【中文标题】如何在休息套件中解析此响应?【英文标题】:How to parse this repsonse in restkit? 【发布时间】:2016-02-24 07:21:15 【问题描述】:

我完全困惑于在 restkit 中解析这种响应。我正在使用这个link,但我无法理解如何解析这个响应。任何帮助将不胜感激。

“groups”: 
      "group1": [
                
         "email": "blake@restkit.org",        
         "favorite_animal": "Monkey"    
        ,
                
         "email": "slake@restkit.org",        
         "favorite_animal": "Donkey"    
        
      ],    
      "group2": [
        
         "email": "sarah@restkit.org",   
         "favorite_animal": "Cat"
        ,
        
         "email": "varah@restkit.org",   
         "favorite_animal": "Cow"
        
      ]
    

我正在使用下面的映射。

@interface GroupResponse : NSObject

@property (nonatomic, strong) NSArray *Groups;

+ (RKObjectMapping *)mapping;

@end

@implementation GroupResponse

+ (RKObjectMapping *)mapping 

    RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[self class]];
    [objectMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@“groups” toKeyPath:@“Groups” withMapping:[GroupData mapping]]];

    return objectMapping;

@end



@interface GroupData : NSObject

@property (nonatomic, strong) NSString *groupName;
@property (nonatomic, strong) NSString *arrPersons;

+ (RKObjectMapping *)mapping;

@end

@implementation GroupData

+ (RKObjectMapping *)mapping 

    RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[self class]];

    objectMapping.forceCollectionMapping = YES;
    [objectMapping addAttributeMappingFromKeyOfRepresentationToAttribute:@"groupName"];

    [objectMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@“(groupName)” toKeyPath:@"arrPersons" withMapping:[Person mapping]]];

    return objectMapping;


@end


@interface Person : NSObject

@property (nonatomic, strong) NSString *email;
@property (nonatomic, strong) NSString *favAnimal;

+ (RKObjectMapping *) mapping;
@end

@implementation Person

+ (RKObjectMapping *)mapping 

    RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[self class]];

    [objectMapping addAttributeMappingsFromDictionary:@@"email" : @"email",
                                                        @"favorite_animal" : @"favAnimal"];

    return objectMapping;


@end

每次 arrPersons 都是零。在这种情况下如何进行正确的映射。

【问题讨论】:

你试过什么代码?你在使用NSJSONSerialization 吗?它看起来很简单——一个字典,其中每个键都包含一个字典数组 @Paulw11 是的,可以使用 NSJSONSerialization 来完成。但我正在使用 RestKit 进行对象映射。 好的,您能展示一下您使用该框架尝试过的内容吗? 对究竟是什么感到困惑? 【参考方案1】:

这个属性:

@property (nonatomic, strong) NSString *arrPersons;

实际上应该是一个可变数组,而不是字符串类型:

@property (nonatomic, strong) NSMutableArray *arrPersons;

因为嵌套的 JSON 数组无法转换为字符串,并且您的映射表明应将其处理为 Person 对象的数组。

【讨论】:

哦!那是我犯的一个愚蠢的错误。感谢您的帮助韦恩。现在工作正常

以上是关于如何在休息套件中解析此响应?的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中解析此响应,并从 API 响应中的两个数组的文本字段中获取响应值? [关闭]

如何解析这种具有不同名称的 json,或者告诉我如何在回收站视图中显示此响应。 :(

未找到休息套件 RKObjectMapping 文件

我应该在哪个层、Dao 或服务中解析 Rest 客户端响应? [关闭]

如何从Angular中的响应中解析HTML?

如何从我的休息服务发送一个 json 对象,以便我可以在客户端 javascript 上解析出来