本發(fā)明涉及實體文件的生成技術(shù)領(lǐng)域,尤其涉及一種基于Mac平臺的JSON數(shù)據(jù)生成實體文件的方法。
背景技術(shù):
目前,將JSON數(shù)據(jù)生成實體文件(Model),一般使用一個命令行工具,通過一個給定的JSON文件來生成Swift相關(guān)的Model,這種方法在使用過程中,存在以下缺陷:
1.命令行工具使用成本比較高,需要記錄相應(yīng)的指令集才行;
2.用戶拿到給定的JSON后還需要創(chuàng)立一個相應(yīng)的JSON文件,而這個步驟在實體文件生成過程中沒有什么用途,顯得沒有必要,浪費了資源空間;
3.NSCoding的支持不可選,存在冗余代碼的情況,從而使手動修改Model的成本變高;
4.模版單一,只能生成NSObject類型或Swift對應(yīng)的Model類;
5.不能定制頭部說明文檔,比如作者,機構(gòu)名;
6.無法兼容第三方框架的Model,由于傳統(tǒng)的Model在JSON映射實體需要編寫大量的代碼,而第三方Model很好的解決了轉(zhuǎn)換的復(fù)雜度。
另外,在編寫接口對應(yīng)的Model類這些工作中,往往花費的時間占用了很大的一部分開發(fā)時間,在編寫過程中需要對照J(rèn)SON數(shù)據(jù)進(jìn)行一一的數(shù)據(jù)判斷,與字段名稱對應(yīng)編寫,容易出錯,效率很低。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種基于Mac平臺的JSON數(shù)據(jù)生成實體文件的方法,從而解決現(xiàn)有技術(shù)中存在的前述問題。
為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
一種基于Mac平臺的JSON數(shù)據(jù)生成實體文件的方法,包括如下步驟:
S1,讀取JSON數(shù)據(jù),判斷所述JSON數(shù)據(jù)的類型;
S2,根據(jù)所述JSON數(shù)據(jù)的類型,對所述JSON數(shù)據(jù)進(jìn)行解析,得到所述JSON數(shù)據(jù)的所有字段;
S3,根據(jù)每個所述JSON數(shù)據(jù)的字段,拼裝成對應(yīng)的model的字符,所述字符包括所述JSON數(shù)據(jù)的字段的名稱和類型;
S4,根據(jù)所述JSON數(shù)據(jù)的類型,選取對應(yīng)類型的實體類模板;
S5,根據(jù)所述模板的類型對所述模板進(jìn)行解析,得到所述模板的格式;
S6,將所述模板的格式與所述model的字符拼裝,并寫入到文件中,生成model類。
優(yōu)選地,所述JSON數(shù)據(jù)的類型包括:NSObject,Mantle,Swift和ObjectMapper。
優(yōu)選地,S2中,所述對所述JSON數(shù)據(jù)進(jìn)行解析,得到所述JSON數(shù)據(jù)的所有字段,具體為:將所述JSON數(shù)據(jù)轉(zhuǎn)換為NSDictionary字典,通過NSDictionary的allkeys方法,獲取所有的JSON屬性名,并保存到數(shù)組中。
優(yōu)選地,S3中,所述根據(jù)每個所述JSON數(shù)據(jù)的字段,拼裝成對應(yīng)的model的字符,具體為:遍歷S2步驟中程序存儲的數(shù)組,并通過數(shù)組的key來對S2中的NSDictionary進(jìn)行取值,將取值結(jié)果的類型進(jìn)行判斷,并與字段名做對應(yīng)的存儲。
優(yōu)選地,S5具體為:判斷選取的實體模版,根據(jù)S3步驟中的字段名與字段類型,進(jìn)行分別對應(yīng)的處理。
本發(fā)明的有益效果是:本發(fā)明提供的基于Mac平臺的JSON數(shù)據(jù)生成實體文件的方法,通過JSON數(shù)據(jù)類型分析和字段解析,轉(zhuǎn)換成對應(yīng)類型的目標(biāo)程序的model,并封裝成實體文件,實現(xiàn)了自動將JSON字段與Cocoa的程序中的類型進(jìn)行映射,支持4種Model的格式(NSObject,Mantle,Swift,ObjectMapper),減少了利用現(xiàn)有技術(shù)在編寫Model上面花費的時間,成倍的節(jié)省開發(fā)時間;通過程序紀(jì)錄分析數(shù)據(jù)名稱與類型,減少了出錯的幾率,使開發(fā)人員可以將更多的時間投入到程序邏輯開發(fā)中。
附圖說明
圖1是本發(fā)明提供的基于Mac平臺的JSON數(shù)據(jù)生成實體文件的方法流程示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施方式僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,本發(fā)明實施例提供了一種基于Mac平臺的JSON數(shù)據(jù)生成實體文件的方法,包括如下步驟:
S1,讀取JSON數(shù)據(jù),判斷所述JSON數(shù)據(jù)的類型;
S2,根據(jù)所述JSON數(shù)據(jù)的類型,對所述JSON數(shù)據(jù)進(jìn)行解析,得到所述JSON數(shù)據(jù)的所有字段;
S3,根據(jù)每個所述JSON數(shù)據(jù)的字段,拼裝成對應(yīng)的model的字符,所述字符包括所述JSON數(shù)據(jù)的字段的名稱和類型;
S4,根據(jù)所述JSON數(shù)據(jù)的類型,選取對應(yīng)類型的實體類模板;
S5,根據(jù)所述模板的類型對所述模板進(jìn)行解析,得到所述模板的格式;
S6,將所述模板的格式與所述model的字符拼裝,并寫入到文件中,生成model類。
其中,所述實體的類型包括:NSObject,MTLModel,Swift和ObjectMapper。則模板的類型就對應(yīng)包括:Header_NSObject.tpl,Source_NSObject.tpl,Header_MTL Model.tpl,Source_MTLModel.tpl,Swift.tpl,ObjectMapper_Swift.tpl,因此,采用本發(fā)明提供的方法,可以將JSON數(shù)據(jù)實現(xiàn)對NSObject,Mantle,Swift和ObjectMap per四個類型的model類的生成。
本發(fā)明實施例中,S2中,所述對所述JSON數(shù)據(jù)進(jìn)行解析,得到所述JSON數(shù)據(jù)的所有字段,具體可以為:將JSON數(shù)據(jù)轉(zhuǎn)換為NSDictionary字典,通過NSDictionary的allkeys方法,獲取所有的JSON屬性名,并保存到數(shù)組中
本發(fā)明實施例中,S3中,所述根據(jù)每個所述JSON數(shù)據(jù)的字段,拼裝成對應(yīng)的model的字符,具體可以為:遍歷S2步驟中程序存儲的數(shù)組,并通過數(shù)組的key來對S2中的NSDictionary進(jìn)行取值,將取值結(jié)果的類型進(jìn)行判斷,并與字段名做對應(yīng)的存儲。
本發(fā)明實施例中,S5具體可以為:判斷選取的實體模版,根據(jù)S3步驟中的字段名與字段類型,進(jìn)行分別對應(yīng)的處理
通過采用本發(fā)明公開的上述技術(shù)方案,得到了如下有益的效果:本發(fā)明提供的基于Mac平臺的JSON數(shù)據(jù)生成實體文件的方法,通過JSON數(shù)據(jù)類型分析和字段解析,轉(zhuǎn)換成對應(yīng)類型的目標(biāo)程序的model,并封裝成實體文件,實現(xiàn)了自動將JSON字段與Cocoa的程序中的類型進(jìn)行映射,支持4種Model的格式(NSObject,Mantle,Swift,ObjectMapper),減少了利用現(xiàn)有技術(shù)在編寫Model上面花費的時間,成倍的節(jié)省開發(fā)時間;通過程序紀(jì)錄分析數(shù)據(jù)名稱與類型,減少了出錯的幾率,使開發(fā)人員可以將更多的時間投入到程序邏輯開發(fā)中。
本說明書中的各個實施例均采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領(lǐng)域人員應(yīng)該理解的是,上述實施例提供的方法步驟的時序可根據(jù)實際情況進(jìn)行適應(yīng)性調(diào)整,也可根據(jù)實際情況并發(fā)進(jìn)行。
上述實施例涉及的方法中的全部或部分步驟可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計算機設(shè)備可讀取的存儲介質(zhì)中,用于執(zhí)行上述各實施例方法所述的全部或部分步驟。所述計算機設(shè)備,例如:個人計算機、服務(wù)器、網(wǎng)絡(luò)設(shè)備、智能移動終端、智能家居設(shè)備、穿戴式智能設(shè)備、車載智能設(shè)備等;所述的存儲介質(zhì),例如:RAM、ROM、磁碟、磁帶、光盤、閃存、U盤、移動硬盤、存儲卡、記憶棒、網(wǎng)絡(luò)服務(wù)器存儲、網(wǎng)絡(luò)云存儲等。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視本發(fā)明的保護(hù)范圍。