2010-04-13 5 views
6

Para mi aplicación de iPhone, estoy consumiendo un servicio RESTful y obteniendo JSON. He encontrado bibliotecas para deserializar esto en un NSDictionary. Sin embargo, me pregunto si hay bibliotecas para deserializar la lista JSON/NSDictionary/Property en mi objeto (una arbitraria de mi parte).Asignación de objetos en Object-C (iphone) de JSON

El equivalente de Java serían los mapeadores relacionales de objetos aunque el tipo de mapeo de objetos que estoy buscando es relativamente sencillo (tipos de datos simples, sin relaciones complejas, etc.).

Noté que Objective-C tiene introspección, por lo que parece teóricamente posible, pero no he encontrado una biblioteca para hacerlo.

¿O hay una manera simple de cargar un objeto desde un objeto NSDictionary/Property List que no requiere modificación cada vez que cambia el objeto?

Por ejemplo:

{ "id" : "user1", 
    "name" : "mister foobar" 
    "age" : 20 } 

se carga en objeto

@interface User : NSObject { 
NSString *id; 
NSString *name; 
int *age; 
} 
+0

edad no tiene símbolo del asterisco porque es un número entero –

Respuesta

5

Ven a ver el protocolo NSKeyValueCoding. En particular, los métodos setValuesForKeysWithDictionary: y dictionaryWithValuesForKeys:

+0

impresionante. Gracias paull. No sabía que NSObject admitía este tipo de protocolo. Puedo escribir mi propio mapeador simple ahora. – pschang

1

Eche un vistazo al proyecto Loid en Sourceforge. Mi intención es proporcionar de lo que estás hablando.

En este momento, el framework puede realizar una ingeniería inversa de una meta descripción sobre un Objeto (como su objeto "Usuario") y puede serializar hacia y desde un objeto LoidTypeData. Mi intención es crear una instancia de LoidTypeData a partir de un bloque JSON entrante y luego vincularlo al Objeto. Por supuesto, lo contrario también estará allí.

Es de código abierto y GPL. Necesitarás acceder al código de SVN en este momento, no sé cómo construir distro para Mac.

- Frank

Cuestiones relacionadas