iOS:一鍵Model轉Json或者NSDictionary
有些人只會使用model,而不會解析,有時候不能夠清楚的看到層次,很耽誤事,通過封裝的一個類,可以輕鬆實現Model轉Json或者NSDictionary。
使用方法:
這個MyData類用來儲存Model。
#import <Foundation/Foundation.h>
@interface MyData :NSObject
@property (nonatomic,strong)NSString *name;
@property (nonatomic,strong)NSString *nullString;
@property (nonatomic)int age;
@property (nonatomic)BOOL male;
@property (nonatomic,strong)MyData *objProp;
@property (nonatomic,strong)NSArray *arrProp;
@property (nonatomic,strong)NSDictionary *dicProp;
@end
通過MyData建立一個物件,裡面有各種資料型別,包括陣列,字典等
MyData *main = [[MyDataalloc]init];
main.name =@"sunyuqiang";
main.age
MyData *childOfChild = [[MyDataalloc]init];
childOfChild.name =@"child of child";
childOfChild.age = -23;
MyData *child = [[MyDataalloc]init];
child.name =@"child";
child.arrProp =@[@"test",@123, @[@456,@"array in array", childOfChild]];
main.objProp = child;
main.dicProp
//輸出Model
NSLog(@"main====%@",main);
使用ModelToJson打印出字典:
//輸出字典
NSDictionary *dic = [ModelToJsongetObjectData:main];
NSLog(@"dic==%@", dic);
使用ModelToJson打印出json:
//輸出json
NSData *jsonData = [ModelToJsongetJSON:mainoptions:NSJSONWritingPrettyPrintederror:nil];
NSString *jsonText = [[NSStringalloc]initWithData:jsonDataencoding:NSUTF8StringEncoding];
NSLog(@"jsonText===%@", jsonText);
附錄: ModelToJson.h的程式碼:#import <Foundation/Foundation.h>
@interface ModelToJson :NSObject
//通過物件返回一個NSDictionary,鍵是屬性名稱,值是屬性值。
+ (NSDictionary*)getObjectData:(id)obj;
//將getObjectData方法返回的NSDictionary轉化成JSON
+ (NSData*)getJSON:(id)obj options:(NSJSONWritingOptions)options error:(NSError**)error;
//直接通過NSLog輸出getObjectData方法返回的NSDictionary
+ (void)print:(id)obj;
@end
ModelToJson.m的程式碼:
#import "ModelToJson.h"
#import <objc/runtime.h>
@implementation ModelToJson
+ (NSDictionary*)getObjectData:(id)obj
{
NSMutableDictionary *dic = [NSMutableDictionarydictionary];
unsignedint propsCount;
objc_property_t *props =class_copyPropertyList([obj class], &propsCount);
for(int i =0;i < propsCount; i++)
{
objc_property_t prop = props[i];
NSString *propName = [NSStringstringWithUTF8String:property_getName(prop)];
id value = [objvalueForKey:propName];
if(value ==nil)
{
value = [NSNullnull];
}
else
{
value = [selfgetObjectInternal:value];
}
[dicsetObject:valueforKey:propName];
}
return dic;
}
+ (void)print:(id)obj
{
NSLog(@"%@", [selfgetObjectData:obj]);
}
+ (NSData*)getJSON:(id)obj options:(NSJSONWritingOptions)options error:(NSError**)error
{
return [NSJSONSerializationdataWithJSONObject:[selfgetObjectData:obj]options:options error:error];
}
+ (id)getObjectInternal:(id)obj
{
if([objisKindOfClass:[NSStringclass]]
|| [objisKindOfClass:[NSNumberclass]]
|| [objisKindOfClass:[NSNullclass]])
{
return obj;
}
if([objisKindOfClass:[NSArrayclass]])
{
NSArray *objarr = obj;
NSMutableArray *arr = [NSMutableArrayarrayWithCapacity:objarr.count];
for(int i =0;i < objarr.count; i++)
{
[arr setObject:[selfgetObjectInternal:[objarrobjectAtIndex:i]]atIndexedSubscript:i];
}
return arr;
}
if([objisKindOfClass:[NSDictionaryclass]])
{
NSDictionary *objdic = obj;
NSMutableDictionary *dic = [NSMutableDictionarydictionaryWithCapacity:[objdiccount]];
for(NSString *keyin objdic.allKeys)
{
[dicsetObject:[selfgetObjectInternal:[objdicobjectForKey:key]] forKey:key];
}
return dic;
}
return [selfgetObjectData:obj];
}
@end
相關推薦
iOS:一鍵Model轉Json或者NSDictionary
有些人只會使用model,而不會解析,有時候不能夠清楚的看到層次,很耽誤事,通過封裝的一個類,可以輕鬆實現Model轉Json或者NSDictionary。 使用方法: 這個MyData類用來儲存Model。 #import <Foundation/Foun
docker-compose入門示例:一鍵部署 Nginx+Tomcat+Mysql
命令 real 一定的 mes 映射 如果 們的 提前 出現 整體環境配置 整體環境的配置,如果一個一個 Dockerfile 去寫,那麽是相當麻煩的,好在 Docker 有一個名為 Docker-Compose 的工具提供,我們可以使用它一次性完成整體環境的配置: 首先
Red5一鍵安裝腳本(Linux&Win):一鍵搭建你的直播平臺
代碼托管 播放 有用 try -c serve 一鍵 目錄 all Red5一鍵部署script(Linux&Win):一鍵搭建你的直播平臺 看到bilibili,熊貓TV,鬥魚TV等直播平臺你是不是也很眼紅呢,這裏站長為大夥寫了一個Red5一鍵部署script。
Red5一鍵安裝指令碼(Linux&Win):一鍵搭建你的直播平臺
Red5一鍵部署script(Linux&Win):一鍵搭建你的直播平臺 看到bilibili,熊貓TV,鬥魚TV等直播平臺你是不是也很眼紅呢,這裡站長為大夥寫了一個Red5一鍵部署script。 Red5供給基於Flash的流媒體服務的一款基於Java的開源流媒體伺服器。它由Java言語編寫,使
谷歌外掛:一鍵訪問外網
註冊時輸入如下邀請碼,即可升格為VIP會員 W-QUoj4bUSYLV2Cc 安裝, 使用說明 點選這裡下載外掛(此連結僅在不能登入Google Chrome Store時使用) 第一步: 下載外掛 詳細圖文說明
Python物件轉json【包括巢狀物件轉json,django的model轉json】
背景: 給app寫介面時經常會遇到將一個model轉為json返回。 問題: 網上也有類似方法,只是搜尋結果多少有些問題,總是搜了好一會兒才找到合適的方法,另外,網上更多集中的只是簡單些的物件,對於複雜的物件,還是不容易找到好的方式。 方案(python3.6): 1
支付寶一鍵跳轉分站託管教程【附圖】
【分站託管】 我們提供伺服器,域名請自行購買,解析A記錄到分配給你的ip,記錄值填* http://t.cn/E7NCiB0 (註冊完後回到首頁-產品-域名註冊) 支援泛解析(*),每個頂級域名下無限個
一個簡單的shell指令碼:一鍵部署tomcat及釋出簡單程式指令碼
測試環境中一鍵部署的一個小指令碼,這裡記錄下,方便想聯絡的人進行參考 環境介紹: 作業系統cos7.4 jdk版本:1.8 中介軟體服務版本:tomcat7.0.75 ——————————————以下是指令碼內容—————————————————————————
如何從推廣簡訊連結喚起 App ?這種一鍵跳轉的方式瞭解一下!
一、需求描述 寫這篇文章,也是緣於運營的一個需求:在 App 運營過程中,會有大量的推廣簡訊,裡面附有連結,目的是引導使用者參與活動。如果使用者手機沒有安裝我們的 App 就引導其去下載頁,如果使用者已經安裝了我們的 App 就直接在 App 中開啟對應的活動。
golang 一鍵生成 form,json,gorm標籤
每次有新表產生時,就會有新的model,model編寫完後,繁雜的標籤註解令人煩躁,所以寫了這樣的工具。 func AddJsonFormGormTag(in string) (string) {
npm如何一鍵安裝package.json裡的依賴檔案。
原文出處:https://blog.csdn.net/lydia_liuY/article/details/80816267 這裡介紹如何使用npm一鍵安裝package.json裡的dependencies 和devDependencies裡的所有模組。 npm install //預設安
Infura:一鍵接入以太坊
昨天聽說了Infura這個專案,就花了點時間瞭解了一下。 1.什麼是Infura? 專業一點講,Infura是一種IaaS(Infrastructure as a Service)產品,目的是為了降低訪問以太坊資料的門檻。 通俗一點講,Infura就是一個可以讓你的dApp快
《架構系列四:一鍵部署應用到Tomcat叢集中》
基於前面的《架構系列三:使用Keepalived+Nginx+tomcat實現叢集部署》,我們配置了nginx+Tomcat叢集,如果需要在VM1,VM2各部署6個Tomcat,這時候怎麼將應用部署到叢集中呢,如果手動一個一個的部署,那要部署12次,效率非常底,因此我們迫切需要一鍵自動部
Android:一鍵find控制元件,從此告別繁瑣的findViewById
記得之前寫過一篇部落格叫做: 此文是介紹在eclipse環境下使用ButterKnife的,相比傳統的findViewById確實簡單了點~但是筆者認為還不夠簡單~~ 在谷歌停止對ADT+Eclipse停止更新之後~筆者還苦苦在Eclipse堅持了幾個月終於開始轉移到An
linux部署神器(附壓縮包):一鍵安裝centos 7環境基礎環境,lanmp懶人版,還有tomat等你想不到的linux神器
文章目錄 壓縮包 一、安裝版本指南 二、開始安裝 三、安裝完成 四、安裝虛擬環境 壓縮包 http://mirrors.linuxeye.com/oneinstack-full.tar.gz 一、安裝版本指南 可選擇
七牛:一篇玩轉七牛CDN時間戳防盜鏈———python版
文章目錄 前言 一、七牛portal配置 二、使用python生成時間戳防盜鏈url 三、完成 前言 七牛文件配置時間戳防盜鏈較為複雜,這裡專門寫一份簡單版卻五臟俱全的小白文件,旨在交流,同時學習。 Github地址:https:
手機遠端控制Mac實現iOS APP一鍵打包上傳
聽起來有點ridiculous哈~ 不談業務場景,就說說功能實現~ 需要解決兩個問題: 手機怎麼就能控制電腦(這裡指的Mac) 怎麼打包並上傳 問題一:手機控制Mac電腦 AppleScript 有好多辦法是可以控制電腦執行一定的操作,這裡
Pycharm技巧:一鍵加引號,快速加引號,批量加引號
Pycharm 一鍵加引號,快速加引號,批量加引號,自定義加引號 最近因為工作需要寫了點指令碼,有時候在爬取的時候需要將瀏覽器中的Hearders 複製到Pycharm中使用, 但是複製過來的格式不是需要的鍵值格式,挨個手動敲鍵盤太累,畢竟咱們寫指令碼就是為了解放雙手(手動滑稽): 解決方式
iOS app一鍵打包並上傳伺服器
打包指令碼使用方法 1.開啟終端 2.在終端中直接拉兩個檔案路徑 到這裡就完成了一鍵打包的工作。 注: 1.中間如果出現提示下面這個錯誤: xcrun: error: unable to find utility “Pac
java 自己實現專案一鍵全轉碼 解決檔案亂碼問題
經常在使用外部匯入的專案,開啟之後想學習一番,結果發現所有註釋都亂碼,看起來很頭疼,這個問題困擾我很久,相信大家在學習過程中也會遇到。所以昨晚寫了一個小程式,只要輸入專案檔案的根目錄,可以實現專案內所有java檔案自動轉碼的功能。預設是從GBK轉碼為UTF-8。 首先聊聊正