前言

基于Runtime,封装一个字典或JSON字符串转模型的框架。


一、字典转模型

调用方法j_modelWithDictionary:,传入字典。

    Book *book = [Book j_modelWithDictionary:@{@"id":@(99),@"name":@"书",@"pages":@(199),@"author":@{@"name":@"小王",@"birthday":@"1987-09-31"}}];
    NSLog(@"%@",book);

输出:

2025-09-16 23:11:03.255581+0800 JModelDemo[684:79723] Book,id:99,name:书,pages:199,作者名:小王,作者生日:1987-09-31

二、JSON字符串转模型

调用方法j_modelWithJSON:,传入JSON字符串。

    Book *book = [Book j_modelWithJSON:@"{\"id\": 99,\"name\": \"书\", \"pages\": 199, \"author\": {\"name\": \"小王\", \"birthday\": \"1987-09-31\" }}"];
    NSLog(@"%@",book);

输出:

2025-09-16 23:13:41.437601+0800 JModelDemo[688:80503] Book,id:99,name:书,pages:199,作者名:小王,作者生日:1987-09-31

三、JSON字符串转模型数组

调用方法j_modelsWithJSON:,传入JSON字符串。

    NSArray *arr = [Book j_modelsWithJSON:@"[{\"id\": 99,\"name\": \"书1\", \"pages\": 199, \"author\": {\"name\": \"小王\", \"birthday\": \"1987-09-31\" }},{\"id\": 100,\"name\": \"书2\", \"pages\": 199, \"author\": {\"name\": \"小王\", \"birthday\": \"1988-09-31\" }},{\"id\": 101,\"name\": \"书3\", \"pages\": 199, \"author\": {\"name\": \"小王\", \"birthday\": \"1989-09-31\" }}]"];

输出

2025-09-16 23:15:53.613887+0800 JModelDemo[692:81257] (
“Book,id:99,name:\U4e661,pages:199,\U4f5c\U8005\U540d:\U5c0f\U738b,\U4f5c\U8005\U751f\U65e5:1987-09-31”,
“Book,id:100,name:\U4e662,pages:199,\U4f5c\U8005\U540d:\U5c0f\U738b,\U4f5c\U8005\U751f\U65e5:1988-09-31”,
“Book,id:101,name:\U4e663,pages:199,\U4f5c\U8005\U540d:\U5c0f\U738b,\U4f5c\U8005\U751f\U65e5:1989-09-31”
)

四.几点说明

支持属性和键的映射,方便用户自定义属性名。

+(NSDictionary *)propertyKeyMapping{
    return @{@"bookId":@"id"};
}

可以不指定特殊类,程序能自己推断。

//下面的代码也可以不写,见demo
+(NSDictionary *)specialClassMapping{
    return @{@"author":@"Author"};
}

获取对象类型代码

五.代码地址

代码地址


六、总结

JModel是基于Runtime的字典转模型工具,支持字典快速生成自定义模型对象。

更多推荐