2012-06-08 58 views
5

我有JSON字符串這樣的格式:如何繪製JSON陣列RestKit

[{"image":"/0001.jpg","link":"/index.php"}, 
{"image":"/0001.jpg","link":"/index.php"}] 

它並沒有在頂層的一個關鍵。

[mapping mapKeyPath:@"image" toAttribute:@"image"]; 

這樣的映射將無法正常工作,它給我的錯誤:

restkit.object_mapping:RKObjectMapper.m:81 Adding mapping error: Could not find an object mapping for keyPath: '' 

如何映射這種類型的JSON的?

+0

這是JSON字典的正確格式,我認爲它是正式的向頂層添加密鑰。我猜這不是你的json編輯雖然,耐人尋味。 – erran

+2

http://jsonlint.com/ < - 找到一個json驗證器,看起來它是一個有效的格式。 :O – erran

+0

我還沒找到辦法做到這一點。幸運的是,我也控制了我的服務器,並修改了服務器以添加頂級密鑰。 –

回答

1

使用

[[RKObjectManager sharedManager].mappingProvider addObjectMapping:myObject]; 

你應該檢查Restkit對象映射文檔 「Mapping without KVC」 部分。

下面是從文檔的例子:

[ 
    { "title": "RestKit Object Mapping Intro", 
     "body": "This article details how to use RestKit object mapping...", 
     "author": { 
      "name": "Blake Watters", 
      "email": "[email protected]" 
     }, 
     "publication_date": "7/4/2011" 
    } 
] 

你映射的是這樣的:

// Our familiar articlesMapping from earlier 
RKObjectMapping* articleMapping = [RKObjectMapping mappingForClass:[Article class]]; 
[articleMapping mapKeyPath:@"title" toAttribute:@"title"]; 
[articleMapping mapKeyPath:@"body" toAttribute:@"body"]; 
[articleMapping mapKeyPath:@"author" toAttribute:@"author"]; 
[articleMapping mapKeyPath:@"publication_date" toAttribute:@"publicationDate"]; 

[[RKObjectManager sharedManager].mappingProvider addObjectMapping:articleMapping]; 
+0

hmm,看起來目前的RK版本沒有'-addObjectMapping'方法。我們現在能做什麼?任何更新? – boog

+0

這個答案有5年了...現在不在iOS上開發:C – clopez

0

對我來說,解決辦法是:

添加此響應描述,使用物體在陣列內

[manager addResponseDescriptor:[ObjectInsideTheArray getResponseDescriptor]]; 

,並在成功響應

的NSArray *響應=(NSArray的*)[mappingResult 陣列]; //而不是firstObject