IOS MJExtension json转模型的轻量级框架的使用

框架下载地址是:

https://github.com/makeLaugh/MJExtension

这边主要的一个示例是将一个从web上面取到的json字符窜转化成model的一个流程,开始集成吧。

1)下载解压

2)添加到新的项目中

3)导入头文件后,开始使用这个文件,这边是从web上面取得的一个数据,直接映射成一个model对象

这里只是其中的一个使用方法,更多的方法可以查看其下载文件中的main方便中的更加详细的调用 。

//
//  main.m
//  字典与模型的互转
//
//  Created by MJ Lee on 14-5-21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//
/**
 MJ友情提醒:
 1.MJExtension是一套“字典和模型之间互相转换”的轻量级框架
 2.MJExtension能完成的功能
 * 字典 --> 模型
 * 模型 --> 字典
 * 字典数组 --> 模型数组
 * 模型数组 --> 字典数组
 3.具体用法主要参考 main.m中各个函数 以及 "NSObject+MJKeyValue.h"
 4.希望各位大神能用得爽
 */

#import <Foundation/Foundation.h>
#import "MJExtension.h"
#import "User.h"
#import "Status.h"
#import "StatusResult.h"

/**
 *  简单的字典 -> 模型
 */
void keyValues2object()
{
    // 1.定义一个字典
    NSDictionary *dict = @{
                           @"name" : @"Jack",
                           @"icon" : @"lufy.png",
                           };
    
    // 2.将字典转为User模型
    User *user = [User objectWithKeyValues:@"44"];
    
    // 3.打印User模型的属性
    NSLog(@"name=%@, icon=%@", user.name, user.icon);
}

/**
 *  复杂的字典 -> 模型 (模型里面包含了模型)
 */
void keyValues2object2()
{
    // 1.定义一个字典
    NSDictionary *dict = @{
                           @"text" : @"是啊,今天天气确实不错!",
                           
                           @"user" : @{
                                   @"name" : @"Jack",
                                   @"icon" : @"lufy.png"
                                   },
                           
                           @"retweetedStatus" : @{
                                   @"text" : @"今天天气真不错!",
                                   
                                   @"user" : @{
                                           @"name" : @"Rose",
                                           @"icon" : @"nami.png"
                                           }
                                   }
                           };
    
    // 2.将字典转为Status模型
    Status *status = [Status objectWithKeyValues:dict];
    
    // 3.打印status的属性
    NSString *text = status.text;
    NSString *name = status.user.name;
    NSString *icon = status.user.icon;
    NSLog(@"text=%@, name=%@, icon=%@", text, name, icon);
    
    // 4.打印status.retweetedStatus的属性
    NSString *text2 = status.retweetedStatus.text;
    NSString *name2 = status.retweetedStatus.user.name;
    NSString *icon2 = status.retweetedStatus.user.icon;
    NSLog(@"text2=%@, name2=%@, icon2=%@", text2, name2, icon2);
}

/**
 *  复杂的字典 -> 模型 (模型的数组属性里面又装着模型)
 */
void keyValues2object3()
{
    // 1.定义一个字典
    NSDictionary *dict = @{
                           @"statuses" : @[
                                   @{
                                       @"text" : @"今天天气真不错!",
                                       
                                       @"user" : @{
                                               @"name" : @"Rose",
                                               @"icon" : @"nami.png"
                                               }
                                       },
                                   
                                   @{
                                       @"text" : @"明天去旅游了",
                                       
                                       @"user" : @{
                                               @"name" : @"Jack",
                                               @"icon" : @"lufy.png"
                                               }
                                       },
                                   
                                   @{
                                       @"text" : @"嘿嘿,这东西不错哦!",
                                       
                                       @"user" : @{
                                               @"name" : @"Jim",
                                               @"icon" : @"zero.png"
                                               }
                                       }
                                   
                                   ],
                           
                           @"totalNumber" : @"2014",
                           
                           @"previousCursor" : @"13476589",
                           
                           @"nextCursor" : @"13476599"
                           };
    
    // 2.将字典转为StatusResult模型
    StatusResult *result = [StatusResult objectWithKeyValues:dict];
    
    // 3.打印StatusResult模型的简单属性
    NSLog(@"totalNumber=%d, previousCursor=%lld, nextCursor=%lld", result.totalNumber, result.previousCursor, result.nextCursor);
    
    // 4.打印statuses数组中的模型属性
    for (Status *status in result.statuses) {
        NSString *text = status.text;
        NSString *name = status.user.name;
        NSString *icon = status.user.icon;
        NSLog(@"text=%@, name=%@, icon=%@", text, name, icon);
    }
}

/**
 *  字典数组 -> 模型数组
 */
void keyValuesArray2objectArray()
{
    // 1.定义一个字典数组
    NSArray *dictArray = @[
                           @{
                               @"name" : @"Jack",
                               @"icon" : @"lufy.png",
                               },
                           
                           @{
                               @"name" : @"Rose",
                               @"icon" : @"nami.png",
                               },
                           
                           @{
                               @"name" : @"Jim",
                               @"icon" : @"zero.png",
                               }
                           ];
    
    // 2.将字典数组转为User模型数组
    NSArray *userArray = [User objectArrayWithKeyValuesArray:dictArray];
    
    // 3.打印userArray数组中的User模型属性
    for (User *user in userArray) {
        NSLog(@"name=%@, icon=%@", user.name, user.icon);
    }
}

/**
 *  模型 -> 字典
 */
void object2keyValues()
{
    // 1.新建模型
    User *user = [[User alloc] init];
    user.name = @"Jack";
    user.icon = @"lufy.png";
    
    Status *status = [[Status alloc] init];
    status.user = user;
    status.text = @"今天的心情不错!";
    
    // 2.将模型转为字典
    //    NSDictionary *dict = [status keyValues];
    NSDictionary *dict = status.keyValues;
    NSLog(@"%@", dict);
}

/**
 *  模型数组 -> 字典数组
 */
void objectArray2keyValuesArray()
{
    // 1.新建模型数组
    User *user1 = [[User alloc] init];
    user1.name = @"Jack";
    user1.icon = @"lufy.png";
    
    User *user2 = [[User alloc] init];
    user2.name = @"Rose";
    user2.icon = @"nami.png";
    
    User *user3 = [[User alloc] init];
    user3.name = @"Jim";
    user3.icon = @"zero.png";
    
    NSArray *userArray = @[user1, user2, user3];
    
    // 2.将模型数组转为字典数组
    NSArray *dictArray = [User keyValuesArrayWithObjectArray:userArray];
    NSLog(@"%@", dictArray);
}

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        // 简单的字典 -> 模型
        //keyValues2object();
        
        // 复杂的字典 -> 模型 (模型里面包含了模型)
                keyValues2object2();
        
        // 复杂的字典 -> 模型 (模型的数组属性里面又装着模型)
        //        keyValues2object3();
        
        // 字典数组 -> 模型数组
        //        keyValuesArray2objectArray();
        
        // 模型转字典
        //        object2keyValues();
        
        // 模型数组 -> 字典数组
        //objectArray2keyValuesArray();
    }
    return 0;
}

时间: 2024-11-08 06:11:49

IOS MJExtension json转模型的轻量级框架的使用的相关文章

IOS MJExtension json转模型的轻量级框架的使用(转载)

原文地址 http://www.bubuko.com/infodetail-559696.html 下载地址:https://github.com/makeLaugh/MJExtension 这边主要的一个示例是将一个从web上面取到的json字符窜转化成model的一个流程,开始集成吧. 1)下载解压 2)添加到新的项目中 3)导入头文件后,开始使用这个文件,这边是从web上面取得的一个数据,直接映射成一个model对象 这里只是其中的一个使用方法,更多的方法可以查看其下载文件中的main方便

IOS开发中 MJExtension json转模型的轻量级框架的使用

这边主要的一个示例是将一个从web上面取到的json字符窜转化成model的一个流程,开始集成吧. 1)下载解压 2)添加到新的项目中 3)导入头文件后,开始使用这个文件,这边是从web上面取得的一个数据,直接映射成一个model对象 这里只是其中的一个使用方法,更多的方法可以查看其下载文件中的main方便中的更加详细的调用 . ////  main.m//  字典与模型的互转////  Created by MJ Lee on 14-5-21.//  Copyright (c) 2014年 i

iOS之JSON Model模型

本文转自:http://blog.csdn.net/smking/article/details/40432287 下面讲一下JSONModel的使用方法. @inteface MyModel : JSONModel 1. 使用JSONModel时,不需要额外去检查所要的服务器属性是否有返回.JSONModel的initWithDictionary方法会自动去进行检查并处理. 2. 有效性检查,如果指定的服务器返回的某个字段没有返回,而且又是必须的, 像下面这样写,则会抛出异常. //this

IOS 字典模型互转框架 MJExtension

详细轻参考:https://github.com/CoderMJLee/MJExtension 功能很牛掰 能做什么? MJExtension是一套字典和模型之间互相转换的超轻量级框架 MJExtension能完成的功能 字典(JSON) --> 模型(Model) 模型(Model) --> 字典(JSON) 字典数组(JSON Array) --> 模型数组(Model Array) 模型数组(Model Array) --> 字典数组(JSON Array) 详尽用法主要参考

iOS端JSON转Model链式编程框架SuperKVC使用方法与原理

背景 在client编程中.字典转模型是一个极为常见的问题,苹果提供了KVC来实现NSDictionary到Model的注入,可是KVC仅仅能进行单层浅注入.且无法处理类型转换.key与属性名不正确应.深度注入等问题,笔者从Masonry得到启示,开发了一个通过链式配置注入器实现深度注入.类型转换.key-属性名映射等功能的轻量级注入框架SuperKVC.眼下已经开源到GitHub,点击这里前往.欢迎Star和Fork.欢迎和我一起完好这个框架! 本文将从应用和原理两个角度介绍SuperKVC

iOS之JSON解析和视频的简单播放

JSON解析 1 JSON简单介绍 1) 什么是JSON (1)JSON是一种轻量级的数据格式,一般用于数据交互 (2)服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) 2) 相关说明 (1)JSON的格式很像OC中的字典和数组 (2)标准JSON格式key必须是双引号 3)JSON解析方案 a.第三方框架  JSONKit\SBJSON\TouchJSON b.苹果原生(NSJSONSerialization)(原生的最常用,也是推荐用的) 2 JSON解析相关代码

iOS下JSON反序列化开源库

iOS下JSON字符串反序列化成对象,在正式的项目中比较常见.如下几个常用开源库,可以根据个人喜好任选其一: 1. JSONModel: https://github.com/icanzilb/JSONModel 2. MJExtension: https://github.com/CoderMJLee/MJExtension 3. Mantle: https://github.com/Mantle/Mantle 其中,JSONModel对数组元素反序列化,需要定义一个跟数组元素Model的类名

IOS解析JSON

JSON建构有两种结构: json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构 1.对象:对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字.字符串.数组.对象几种. 2.数组:数组在js中是中括号“[]”扩

iOS开发--JSON

1.什么是JSON? JSON(JavaScript Object Notation)在网络传输中几乎无处不在,JSON是一种轻量级的数据交换格式,是基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,数据格式容易阅读和编写,同时也非常便于机器解析和生成,在网络传输速度相对于传统的XML快.JSON的英文官网http://www.json.org/,具体的格式可看官网,如果你是在