MJExtension (conversión automática de JSON a modelo de datos)
Obtenido de: http://www.jianshu.com/p/93c242452b9b.
Reimpreso de https://www.cnblogs.com/huoran1120/p/5470480.html
1. Función de MJExtension
Diccionario -> Modelo
Modelo -> Diccionario
Matriz de diccionario -> Matriz de modelo
Matriz de modelo -> Matriz de diccionario
2.pod import declaración pod'MJExtension '
3. Conversión de modelo de datos simple
Estudiante * stu = [Estudiante mj_objectWithKeyValues: dict];
El nombre de atributo del objeto debe ser consistente con los datos en json
Si hay un modelo anidado en el modelo, use esta oración directamente y úsela. Para acceder
por ejemplo: status.retweetedStatus.user.name
4. Hay atributos de matriz en el modelo y la matriz contiene otros modelos.
Implementado dentro del modelo StatusResult
+ (NSDictionary *) objectClassInArray {
regreso @{
@ "estados": @ "Estado",
@ "anuncios": @ "Anuncio"
}
}
StatusResult * resultado = [StatusResult mj_objectWithKeyValues: dict];
Esta forma de escritura no necesita importar archivos de encabezado de anuncio y estado, el nombre de la clase se escribe después de los dos puntos
para (Estado * estado en result.statuses) acceso transversal
5. Si el nombre del atributo en el modelo es diferente de la clave del diccionario (también hay un mapeo multinivel)
@interface Estudiante: NSObject
@property (copia, no atómico) NSString * ID;
@property (copia, no atómico) NSString * desc;
@property (copia, no atómico) NSString * nowName;
@property (copia, no atómico) NSString * oldName;
@property (copia, no atómico) NSString * nameChangedTime;
@property (fuerte, no atómico) Bolsa * bolsa;
@fin
@interface Bolsa: NSObject
@property (copia, no atómico) NSString * nombre;
@property (asignar, no atómico) precio doble;
@fin
NSDictionary * dict = @ {
@ "id": @ "20",
@ "descripción": @ "孩子",
@"nombre" : @{
@ "nuevoNombre": @ "lufy",
@ "oldName": @ "gatito",
@ "información": @ {
@ "nameChangedTime": @ "2013-08"
}
},
@ "otro": @ {
@"bolso" : @{
@ "nombre": @ "小 书包",
@ "precio": @ 100,7
}
}
};
Implementar el siguiente método en Student
+ (NSDictionary *) mj_replacedKeyFromPropertyName {
regreso @{
@"Yo hice",
@ "desc": @ "descripción",
@ "oldName": @ "name.oldName",
@ "nowName": @ "nombre.nuevoNombre",
@ "nameChangedTime": @ "name.info.nameChangedTime",
@ "bolsa": @ "otra.bolsa"
};
}
Mapeo de varios niveles, el anverso es el nombre personalizado y el reverso es la relación de mapeo en el diccionario
6. Convierta una matriz de diccionario en una matriz de modelo
NSArray * dictArray = @ [
@ {
@ "nombre": @ "Jack",
@ "icono": @ "lufy.png",
},
@ {
@ "nombre": @ "Rosa",
@ "icono": @ "nami.png",
}
];
NSArray * userArray = [Usuario mj_objectArrayWithKeyValuesArray: dictArray];
para (Usuario * usuario en userArray) {
NSLog (@ "nombre =% @, icono =% @", nombre.usuario, icono.usuario);
}
7. Convierte un modelo en un diccionario
NSDictionary * statusDict = status.keyValues;
8. Convierta una matriz de modelos en una matriz de diccionario.
NSArray * userArray = @ [usuario1, usuario2];
NSArray * dictArray = [User keyValuesArrayWithObjectArray: userArray];
NSLog (@ "% @", dictArray);