2012-06-08 5 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 validator, похоже, что это допустимый формат. : O – erran

+0

Я не нашел способ сделать это. К счастью, я также контролирую свой сервер и модифицировал сервер, чтобы добавить ключ верхнего уровня. –

ответ

1

Использование

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

Вы должны проверить раздел "Mapping without KVC" на Restkit проецировании объектов 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" 
    } 
] 

И вы карту, что, как это:

// 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 * response = (NSArray *) [mappingResult array]; // вместо firstObject

Смежные вопросы