2012-06-08 12 views
5

Mam json ciąg jak tego formatu:Jak mapować tablicy JSON z RestKit

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

nie ma klucza na najwyższym poziomie.

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

mapowanie jak to nie zadziała, to daje mi błąd:

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

jak mapować tego typu json?

+0

Czy jest to właściwy format dla słownika JSON, pomyślałem, że formalne jest dodanie klucza do najwyższego poziomu. Domyślam się, że to nie jest twój json, ale intrygujący. – erran

+2

http://jsonlint.com/ <- znalazłem walidator json, wydaje się, że jest to poprawny format. : O – erran

+0

Nie znalazłem sposobu, aby to zrobić. Na szczęście mam również kontrolę nad moim serwerem i zmodyfikowałem serwer, aby dodać klucz najwyższego poziomu. –

Odpowiedz

1

Zastosowanie

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

Należy sprawdzić sekcję "Mapping without KVC" na Restkit Docs mapowania obiektów.

Oto przykład z docs:

[ 
    { "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" 
    } 
] 

I mapować że tak:

// 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, lista wyglądów aktualna wersja RK nie ma tej metody "-addObjectMapping". Co możemy teraz zrobić? Jakakolwiek aktualizacja? – boog

+0

Ta odpowiedź ma 5 lat ... nie rozwija się teraz na iOS: C – clopez

0

Dla mnie rozwiązaniem było:

dodać ten deskryptor odpowiedzi, użyj obiekt wewnątrz tablicy

[manager addResponseDescriptor:[ObjectInsideTheArray getResponseDescriptor]]; 

iw odpowiedzi na sukces

NSArray * odpowiedź = (NSArray *) [mappingResult tablica]; // zamiast firstObject

Powiązane problemy