2012-06-08 48 views
5

JSON Tôi có chuỗi json như định dạng này:Làm thế nào để ánh xạ một mảng với RestKit

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

nó không có một chìa khóa ở cấp cao nhất.

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

lập bản đồ như thế này sẽ không hoạt động, nó cung cấp cho tôi những lỗi:

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

Làm thế nào để lập bản đồ kiểu này json?

+0

Đó có phải là định dạng thích hợp cho từ điển JSON hay không, tôi nghĩ chính thức là thêm khóa vào cấp cao nhất. Tôi đoán nó không phải là json của bạn để chỉnh sửa với mặc dù, hấp dẫn. – erran

+2

http://jsonlint.com/ <- tìm thấy trình xác thực json, xuất hiện rằng đó là định dạng hợp lệ. : O – erran

+0

Tôi không tìm thấy cách nào để làm điều đó. May mắn thay, tôi cũng có quyền kiểm soát máy chủ của mình và sửa đổi máy chủ để thêm khóa cấp cao nhất. –

Trả lời

1

Sử dụng

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

Bạn nên kiểm tra "Mapping without KVC" trên Restkit Object Mapping Documents.

Dưới đây là một ví dụ từ các tài liệu:

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

Và bạn ánh xạ đó như thế này:

// 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, xem danh sách phiên bản RK hiện tại không có phương thức '-addObjectMapping' này. Bây giờ chúng ta có thể làm gì đây? Bất kỳ bản cập nhật? – boog

+0

Câu trả lời này có 5 năm ... không phát triển trên iOS ngay bây giờ: C – clopez

0

Đối với tôi, giải pháp là:

thêm mô tả phản ứng này, sử dụng đối tượng bên trong de array

[manager addResponseDescriptor:[ObjectInsideTheArray getResponseDescriptor]]; 

và trong phản hồi thành công

NSArray * response = (NSArray *) [mappingResult array]; // thay vì firstObject

Các vấn đề liên quan