2012-06-08 13 views
5

tengo cadena JSON como este formato:Cómo asignar una matriz JSON con RestKit

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

que no tiene una llave en el nivel superior.

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

mapeo como esto no va a funcionar, me da el error:

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

cómo asignar este tipo de JSON?

+0

Es el formato adecuado para un diccionario JSON, pensé que era formal para agregar una clave al nivel superior. Supongo que no es tu json para editar, intrigante. – erran

+2

http://jsonlint.com/ <- encontrado un validador json, parece que es un formato válido. : O – erran

+0

No he encontrado una manera de hacerlo. Afortunadamente, también tengo control sobre mi servidor y modifiqué el servidor para agregar la clave de nivel superior. –

Respuesta

1

Uso

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

Debe comprobar la sección "Mapping without KVC" en Restkit Docs Mapeo objeto.

Aquí se muestra un ejemplo de los documentos:

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

Y mapa que de esta manera:

// 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, parece que la versión actual de RK no tiene este método '-addObjectMapping'. ¿Qué podemos hacer ahora? ¿Cualquier actualización? – boog

+0

Esta respuesta tiene 5 años ... no se desarrolla en iOS ahora: C – clopez

0

Para mí la solución era:

añadir este descriptor respuesta, utilice el objeto dentro de la matriz

[manager addResponseDescriptor:[ObjectInsideTheArray getResponseDescriptor]]; 

y en la respuesta correcta

NSArray * response = (NSArray *) [mappingResult array]; // en lugar de firstObject

Cuestiones relacionadas