CN106843878A - 一种模型生成方法和系统 - Google Patents

一种模型生成方法和系统 Download PDF

Info

Publication number
CN106843878A
CN106843878A CN201710041642.XA CN201710041642A CN106843878A CN 106843878 A CN106843878 A CN 106843878A CN 201710041642 A CN201710041642 A CN 201710041642A CN 106843878 A CN106843878 A CN 106843878A
Authority
CN
China
Prior art keywords
xxmodel
model
placeholder
attribute
files
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710041642.XA
Other languages
English (en)
Other versions
CN106843878B (zh
Inventor
黄露洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710041642.XA priority Critical patent/CN106843878B/zh
Publication of CN106843878A publication Critical patent/CN106843878A/zh
Application granted granted Critical
Publication of CN106843878B publication Critical patent/CN106843878B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种模型生成方法和系统,该方法和系统最终生成的模型类都是基于Mantle、JSON Model等第三方库的模型的子类,这使得生成的模型类能够在编译器的支持下提供内部属性的快捷访问,避免通过键值对访问带来的安全性问题。同时,该方法通过提供模型类的文件模板以及自动化脚本,直接接收一个JSON(XML)字符串作为输入,通过自动化脚本解析并生成输出包含完整信息的模型类文件,从而避免了模型类属性和相关方法的手动书写,进而避免了手动书写带来的安全隐患。

Description

一种模型生成方法和系统
技术领域
本发明涉及iOS开发建模技术领域,尤其涉及一种模块生成方法和系统。
背景技术
在iOS应用特别是基于HTTP的网络应用开发中,通常需要将网络请求的响应数据,例如JSON、XML等类型的数据,进行解析并转化为开发中方便使用的数据结构,这种根据网络响应数据创建的数据结构称为模块模型。模型可以在开发过程中被用于本地数据传输、持久化等过程中,并且能够在编译器的支持下提供内部属性的快速访问。
目前iOS应用开发中常见的生成模块模型的方法主要有如下三种:
1)第一种方案,使用系统自带的数据结构NSDictionary来存储解析后的网络响应数据,此方案只需要一次解析即可完成模型的转换,但使用起来不方便,主要表现为通过手写键值来访问内部属性值,容易因拼写错误导致访问不到目标内部属性值,同时获取到内部属性值后没有类型检查,存在一定的安全隐患。
2)第二种方案,使用根据服务器返回的数据结构手动创建对应的模型数据结构,在iOS中,这就需要手动创建模型类,根据服务器返回数据的结构声明一个个的属性,然后手动实现由网络响应数据解析得到NSDictionary转换为模型类的逻辑,此方案的优点是能够在编译器的支持下提供内部属性的快速访问,但开发效率低,如果项目中这样的模型非常多则需要手写大量重复的代码。
3)第二种方案,是使用 Mantle、JSONModel等第三方数据库来帮助创建模型类,此方案中只需要继承相应的类,然后根据服务器返回的数据结构手写对应的属性即可完成第二种方案中所有的功能,大大的简化了开发流程。但此方案仍需要手写属性,面对大量的建模需求效率不高,而且还可能会因拼写错误引入一些安全隐患,而这些隐患带来的问题通常也不太容易发现。
针对现有技术中模型生成的各种方法存在的缺点,找到一种iOS中高效便捷安全的模型生成方法已成为了急需解决的技术问题。
发明内容
本发明的目的在于提供一种模块生成方法和系统,该方法最终生成的模型类都是基于Mantle、JSONModel等第三方库的模型的子类,这使得生成的模型类能够在编译器的支持下提供内部属性的快捷访问,避免通过键值对访问带来的安全性问题。同时,该方法通过提供模型类的文件模板以及自动化脚本,直接接收一个JSON(XML)字符串作为输入,通过自动化脚本解析并生成输出包含完整信息的模型类文件,从而避免了模型类属性和相关方法的手动书写,进而避免了手动书写带来的安全隐患。
本发明所采用的技术方案如下:
一种模型生成方法,其特征在于,该方法包括:步骤S101,输入需要解析的字符串,并输入需要生成的模型的类名XXModel,选择需要使用的编程语言,选择需要输出的模型类型,确定要使用的第三方库,其中所述第三方库为Mantle、JSONModel或YYModel中的任意一种;步骤S102,自动化脚本检查输入的需要解析的字符串的内容是否符合所选择的需要输出的模型类型的标准格式;若符合,则字符串有效,进入步骤S103;否则无效,并输出错误信息,并退出结束;步骤S103,自动化脚本使用所述确定要使用的第三方库对输入的字符串进行解析和判断,自动化脚本从模板存储路径读取所选择的需要输出的模型类型对应的模板文件,创建模板文件的副本,并进行命名;步骤S104,自动化脚本在内存中创建键值对集合,用来放置解析结果中的不符合规范的属性字段;替换所述模板文件中的类名片段和属性声明片段,将不符合规范的属性添加到所述集合中,处理不符合规范的属性,输出XXModel.h和XXModel.m文件;步骤S105,将XXModel.h和XXModel.m文件添加到iOS项目中。
优选地,所述对输入的字符串进行解析和判断具体包括:对输入的字符串进行解析,若解析失败,则提示失败并输出错误信息,并退出结束;若解析成功,则对解析结果进行判断,若解析结果为数组类型NSArry类型,则提示类型错误并输出错误信息,并退出结束;若解析结果为字典类型NSDictionary类型,则将解析结果输出。
优选地,所述的模板文件具体包括:模板文件为 .h 文件和 .m 文件;在 .h 文件中将模型的类名以第一占位符标识,属性名称以第二占位符标识;在 .m文件中同样将模型的类名以第三占位符标识,属性名称以第四占位符标识。
优选地,所述输出XXModel.h具体包括,对于模板文件XXModel.h,自动化脚本定位到XXModel.h中的以第一占位符标识的第一类名片段,并将其替换为XXModel,定位到以第二占位符标识的第一属性声明片段,将步骤S104中所创建的集合中存储的解析结果拼接成属性声明语句,并替换掉第二占位符,如果属性不符合iOS命名规范,则进行校正,将校正前后的结果以键值对的方式写入所述集合中,输出XXModel.h文件。
优选地,所述输出XXModel.m具体包括:对于模板文件XXModel. m,自动化脚本定位到XXModel.m中的以第三占位符标识的第二类名片段,并将其替换为XXModel,定位到以第四占位符标识的第二属性声明片段,判断所述集合的内容是否为空,如果为空,则说明模型的所有属性命名符合规范,删除第四占位符,输出XXModel.m文件,进入步骤S105;如果所述集合内容不为空,则说明模型的属性命名中有不符合规范的部分,在进行属性名映射后,输出XXModel.m文件。
一种模型生成系统,该生成系统包括输入和选择模块、检查模块、第一处理模块、第二处理模块以及添加模块,其特征在于:输入和选择模块,用于输入需要解析的字符串,并输入需要生成的模型的类名XXModel,选择需要使用的编程语言,选择需要输出的模型类型,确定要使用的第三方库,其中所述第三方库为Mantle、JSONModel或YYModel中的任意一种;检查模块,用于自动化脚本检查输入的需要解析的字符串的内容是否符合所选择的需要输出的模型类型的标准格式;若符合,则字符串有效;否则无效,并输出错误信息;第一处理模块,自动化脚本使用所述确定要使用的第三方库对输入的字符串进行解析和判断,自动化脚本从模板存储路径读取所选择的需要输出的模型类型对应的模板文件,创建模板文件的副本,并进行命名;第二处理模块,自动化脚本在内存中创建键值对集合,用来放置解析结果中的不符合规范的属性字段,替换所述模板文件中的类名片段和属性声明片段,将不符合规范的属性添加到所述集合中,处理不符合规范的属性,输出XXModel.h和XXModel.m文件;添加模块,用于将XXModel.h和XXModel.m文件添加到iOS项目中。
优选地,第一处理模块进一步包括解析单元和判断单元:解析单元,用于对输入的字符串进行解析,若解析失败,则提示失败并输出错误信息;判断单元,对解析结果进行判断,若解析结果为数组类型NSArry类型,则提示类型错误并输出错误信息;若解析结果为字典类型NSDictionary类型,则将解析结果输出。
优选地,所述的模板文件具体包括:模板文件为 .h 文件和 .m 文件,在 .h 文件中将模型的类名以第一占位符标识,属性名称以第二占位符标识,在 .m文件中同样将模型的类名以第三占位符标识,属性名称以第四占位符标识。
优选地,所述第二处理模块包括第一输出单元,具体包括:第一输出单元,用于输出模板文件XXModel.h,自动化脚本定位到XXModel.h中的以第一占位符标识的第一类名片段,并将其替换为XXModel,定位到以第二占位符标识的第一属性声明片段,将所创建的集合中存储的解析结果拼接成属性声明语句,并替换掉第二占位符,如果属性不符合iOS命名规范,则进行校正,将校正前后的结果以键值对的方式写入所述集合中,输出XXModel.h文件。
优选地,所述第二处理模块包括第二输出单元,具体包括:第二输出单元,用于输出模板文件XXModel. m,自动化脚本定位到XXModel.m中的以第三占位符标识的第二类名片段,并将其替换为XXModel,定位到以第四占位符标识的第二属性声明片段,判断所述集合的内容是否为空,如果为空,则说明模型的所有属性命名符合规范,删除第四占位符,输出XXModel.m文件;如果所述集合内容不为空,则说明模型的属性命名中有不符合规范的部分,在进行属性名映射后,输出XXModel.m文件。
本发明的技术方案所能获得的有益效果包括,保护针对iOS项目中对服务器返回数据进行建模的方案与算法。
附图说明
图1为该模型生成方法的流程示意图;
图2为该模型生成系统的功能模块示意图。
具体实施方式
为了更好的说明本发明,现结合具体实施例以及说明书附图对技术方案作进一步的说明。虽然实施例中记载了这些具体的实施方式,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视权利要求书所界定者为准。
该模型生成方法的流程示意图如图1所示。
步骤S101,输入需要解析的字符串,并输入需要生成的模型的类名XXModel,选择需要使用的编程语言,选择需要输出的模型类型,确定要使用的第三方库,其中所述第三方库为Mantle、JSONModel或YYModel中的任意一种;
提供Objective-C和Swift两种语言项目的模型生成,如果是Objective-C项目则生成.h和 .m 文件,如果为Swift项目则选择生成 .swift文件,选择不同文件类型在解析替换细节上稍有不同,但整体流程一致,不构成生成算法上的差异;
步骤S102,自动化脚本检查输入的需要解析的字符串的内容是否符合所选择的需要输出的模型类型的标准格式;若符合,则字符串有效,进入步骤S103;否则无效,并输出错误信息,并退出结束;
其中,自动化脚本是指本方案中用到的能够完成特定功能的在电脑上执行的软件。该步骤主要用于过滤一些非法输入以提高安全性。
步骤S103,自动化脚本使用所述确定要使用的第三方库对输入的字符串进行解析和判断,自动化脚本从模板存储路径读取所选择的需要输出的模型类型对应的模板文件,创建模板文件的副本,并进行命名;
例如,自动化脚本使用iOS系统开发工具包中所提供的NS JSON Serialization库来对JSON进行解析,若解析成功,则解析结果为NS Dictionary类型或NS Array类型,这两种类型是NS JSON Serialization可能的两种解析结果。其中NS Dictionary类型为键值对容器,NS Array类型为数组容器。若解析失败,则提示失败并打印错误信息,流程结束。若为NSArray类型,则提示JSON类型错误并打印错误信息,流程结束。若为NS Dictionary则输出解析结果,进入步骤S106。
步骤S104,自动化脚本在内存中创建键值对集合,用来放置解析结果中的不符合规范的属性字段;
替换所述模板文件中的类名片段和属性声明片段,将不符合规范的属性添加到所述集合中,处理不符合规范的属性,输出XXModel.h和XXModel.m文件;
其中模板文件为 .h 文件和 .m 文件,在 .h 文件中将模型的类名以<#ModelName#>占位符标识,属性名称以<#PropertyName#>占位符标识,在 .m文件中同样将模型的类名以<#ModelName#>占位符标识,属性名称以<#PropertyMap#>占位符标识。
例如,读取与JSON Model对应的模板文件JSON Model Template.h和 JSON ModelTemplate.m,创建副本并分别命名为XXModel.h和XXModel.m,模板文件为事先准备好的文件。
在解析结束之后,通过分别查找这些标识符就可以定位到需要替换的位置从而进行替换。在软件开发中,客户端和服务器之间的命名规范可能存在差异,客户端获取到的从服务器返回的数据的字段名称如old_name可能不符合客户端的命名规范如oldName,因此需要对从服务器获取到的字段进行重命名,创建的集合即用来以键值对的方式存储old_name、oldName。
对于模板文件XXModel.h,自动化脚本定位到XXModel.h中的类名片段<#ModelName#>,并将其替换为XXModel,定位到属性声明片段<#PropertyName#>,将步骤S107中所创建的集合中存储的解析结果拼接成属性声明语句,并替换掉<#PropertyName#>占位符,如果属性不符合iOS命名规范,则进行校正,将校正前后的结果以键值对的方式写入所述集合中,输出XXModel.h文件。
对于模板文件XXModel.m,自动化脚本定位到XXModel.m中的类名片段<#ModelName#>,并将其替换为XXModel,定位到属性声明片段<#PropertyMap#>片段,判断所述集合的内容是否为空,如果为空,则说明模型的所有属性命名符合规范,删除<#PropertyMap#>占位符,输出XXModel.m文件,进入步骤S109;如果所述集合内容不为空,则说明模型的属性命名中有不符合规范的部分,在进行属性名映射后,输出XXModel.m文件,进入步骤S109。
以JSON为例,在JSON Model的(`+ (JSONKeyMapper *)keyMapper `)方法中将所述集合作为输入来构造JSON Key Mapper,用此方法替换<#PropertyMap#>占位符,最终输出XXModel.m文件,进入步骤S110。上述(`+ (JSONKeyMapper *)keyMapper `)方法为JSONModel库提供的对属性名做映射的方法,通过此方法可以将JSON 的字段名,例如old_name重命名为需要的任何名称,例如oldName)。
该步骤主要自动构造了模型的 .h 文件XXModel.h,以及模型的 .m 文件XXModel.m。
步骤S105,将XXModel.h和XXModel.m文件添加到iOS项目中。
在该方法流程中,需要输入字符串和模型的名称,并选择使用的编程语言和第三方库,其他过程由自动化脚本完成,并提供了直接由字符串到模型的方法和工具。相比传统的手工添加方法,添加一个模型,需要经过人工解析字符串,再创建模型,之后完善属性这几个步骤,根据模型的复杂性不同,耗时30秒到3分钟不等。该方法只需要提供简单的输入即可自动完成模型的生成,耗时5秒以内,在有大量模型需要创建时,高效优势更明显。由自动化脚本取代手工,更便捷,增加了字符串有效性验证,生成内容由自动化工具生成,避免了书写错误带来的安全隐患。
该模型生成系统的功能模块示意图如图2所示。该生成系统包括输入和选择模块、检查模块、第一处理模块、第二处理模块以及添加模块,其特征在于:输入和选择模块,用于输入需要解析的字符串,并输入需要生成的模型的类名XXModel,选择需要使用的编程语言,选择需要输出的模型类型,确定要使用的第三方库,其中所述第三方库为Mantle、JSONModel或YYModel中的任意一种;检查模块,用于自动化脚本检查输入的需要解析的字符串的内容是否符合所选择的需要输出的模型类型的标准格式;若符合,则字符串有效;否则无效,并输出错误信息;第一处理模块,自动化脚本使用所述确定要使用的第三方库对输入的字符串进行解析和判断,自动化脚本从模板存储路径读取所选择的需要输出的模型类型对应的模板文件,创建模板文件的副本,并进行命名;第二处理模块,自动化脚本在内存中创建键值对集合,用来放置解析结果中的不符合规范的属性字段,替换所述模板文件中的类名片段和属性声明片段,将不符合规范的属性添加到所述集合中,处理不符合规范的属性,输出XXModel.h和XXModel.m文件;添加模块,用于将XXModel.h和XXModel.m文件添加到iOS项目中。
第一处理模块进一步包括解析单元和判断单元:解析单元,用于对输入的字符串进行解析,若解析失败,则提示失败并输出错误信息;判断单元,对解析结果进行判断,若解析结果为数组类型NSArry类型,则提示类型错误并输出错误信息;若解析结果为字典类型NSDictionary类型,则将解析结果输出。
第二处理模块包括第一输出单元,第一输出单元用于输出模板文件XXModel.h,自动化脚本定位到XXModel.h中的以第一占位符标识的第一类名片段,并将其替换为XXModel,定位到以第二占位符标识的第一属性声明片段,将所创建的集合中存储的解析结果拼接成属性声明语句,并替换掉第二占位符,如果属性不符合iOS命名规范,则进行校正,将校正前后的结果以键值对的方式写入所述集合中,输出XXModel.h文件。
第二处理模块包括第二输出单元,第二输出单元用于输出模板文件XXModel. m,自动化脚本定位到XXModel.m中的以第三占位符标识的第二类名片段,并将其替换为XXModel,定位到以第四占位符标识的第二属性声明片段,判断所述集合的内容是否为空,如果为空,则说明模型的所有属性命名符合规范,删除第四占位符,输出XXModel.m文件;如果所述集合内容不为空,则说明模型的属性命名中有不符合规范的部分,在进行属性名映射后,输出XXModel.m文件。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种模型生成方法,其特征在于,该方法包括:
步骤S101,输入需要解析的字符串,并输入需要生成的模型的类名XXModel,选择需要使用的编程语言,选择需要输出的模型类型,确定要使用的第三方库,其中所述第三方库为Mantle、JSONModel或YYModel中的任意一种,所述编程语言包括Objective-C、Swift两种语言中的任意一种,如果采用Objective-C语言,则输出的模型类型为.h 和 .m,.h为头文件,.m为源文件,如果采用Swift语言,则输出的模型类型为.swfit;
步骤S102,检查输入的需要解析的字符串的内容是否符合所选择的需要输出的模型类型的标准格式;若符合,则字符串有效,进入步骤S103;若不符合,则字符串无效,输出用于指示模型生成错误的信息,并结束本次模型生成;
步骤S103,使用步骤S101所述确定要使用的第三方库对输入的字符串进行解析和判断,从模板存储路径读取所选择的需要输出的模型类型对应的模板文件,创建模板文件的副本,并进行命名;
步骤S104,在内存中创建键值对集合,该集合用来存储解析结果中的不符合iOS命名规范的属性字段,替换所述模板文件中的类名片段和属性声明片段,将不符合规范的属性添加到所述集合中,处理不符合iOS命名规范的属性,进行属性名映射,输出XXModel.h和XXModel.m文件,所述的XXModel.h是头文件,所述的XXModel.m是源文件;
步骤S105,将XXModel.h和XXModel.m文件添加到iOS项目中。
2.根据权利要求1所述的模型生成方法,其特征在于,所述步骤 S103对输入的字符串进行解析和判断包括:
对输入的字符串进行解析,若解析失败,则提示失败并输出解析错误信息,并结束本次模型生成;
若解析成功,则对解析结果进行判断,若解析结果为数组类型NSArry类型,则提示类型错误并输出类型错误信息,并结束本次模型生成;若解析结果为字典类型NSDictionary类型,则将解析结果输出。
3.根据权利要求1所述的模型生成方法,其特征在于,所述的步骤S103的模板文件具体包括:
模板文件为 .h 文件和 .m 文件;
在 .h 文件中将模型的类名以第一占位符标识,属性名称以第二占位符标识;
在 .m文件中将模型的类名以第三占位符标识,属性名称以第四占位符标识。
4.根据权利要求3所述的模型生成方法,其特征在于,所述步骤S104的输出XXModel.h,包括:
查找到XXModel.h中的以第一占位符标识的第一类名片段,并将其替换为模型的类名XXModel;
查找到XXModel.h中的以第二占位符标识的第一属性声明片段,将步骤S104中所创建的集合中存储的解析结果拼接成属性声明语句,并替换掉第二占位符;
如果模型的属性命名不符合iOS命名规范,则进行校正,将校正前后的结果以键值对的方式写入所述集合中,输出XXModel.h文件。
5.根据权利要求3所述的模型生成方法,其特征在于,所述步骤S104的输出XXModel.m包括:
查找到XXModel.m中的以第三占位符标识的第二类名片段,并将其替换为模型的类名XXModel;
查找到XXModel.m中的以第四占位符标识的第二属性声明片段,判断所述集合的内容是否为空;
如果为空,则说明模型的所有属性命名符合iOS命名规范,删除第四占位符,输出XXModel.m文件,进入步骤S105;如果所述集合内容不为空,则说明模型的属性命名不符合iOS命名规范,在进行属性名映射后,输出XXModel.m文件。
6.一种模型生成系统,该生成系统包括输入和选择模块、检查模块、第一处理模块、第二处理模块以及添加模块,其特征在于:
输入和选择模块,用于输入需要解析的字符串,并输入需要生成的模型的类名XXModel,选择需要使用的编程语言,选择需要输出的模型类型,确定要使用的第三方库,其中所述第三方库为Mantle、JSONModel或YYModel中的任意一种;
检查模块,用于检查输入的需要解析的字符串的内容是否符合所选择的需要输出的模型类型的标准格式;若符合,则字符串有效;否则无效,并输出错误信息;
第一处理模块,使用所述确定要使用的第三方库对输入的字符串进行解析和判断,从模板存储路径读取所选择的需要输出的模型类型对应的模板文件,创建模板文件的副本,并进行命名;
第二处理模块,在内存中创建键值对集合,用来放置解析结果中的不符合iOS命名规范的属性字段,替换所述模板文件中的类名片段和属性声明片段,将不符合iOS命名规范的属性添加到所述集合中,处理不符合iOS命名规范的属性,输出XXModel.h和XXModel.m文件;
添加模块,用于将XXModel.h和XXModel.m文件添加到iOS项目中。
7.根据权利要求6所述的模型生成系统,其特征在于,第一处理模块进一步包括解析单元和判断单元:
解析单元,用于对输入的字符串进行解析,若解析失败,则提示失败并输出错误信息;
判断单元,对解析结果进行判断,若解析结果为数组类型NSArry类型,则提示类型错误并输出错误信息;若解析结果为字典类型NSDictionary类型,则将解析结果输出。
8.根据权利要求6所述的模型生成系统,其特征在于,所述的模板文件具体包括:
模板文件为 .h 文件和 .m 文件,在 .h 文件中将模型的类名以第一占位符标识,属性名称以第二占位符标识,在 .m文件中同样将模型的类名以第三占位符标识,属性名称以第四占位符标识。
9.根据权利要求8所述的模型生成系统,其特征在于,所述第二处理模块包括第一输出单元,具体包括:
第一输出单元,用于输出模板文件XXModel.h,定位到XXModel.h中的以第一占位符标识的第一类名片段,并将其替换为XXModel,定位到以第二占位符标识的第一属性声明片段,将所创建的集合中存储的解析结果拼接成属性声明语句,并替换掉第二占位符,如果模型的属性命名不符合iOS命名规范,则进行校正,将校正前后的结果以键值对的方式写入所述集合中,输出XXModel.h文件。
10.根据权利要求8所述的模型生成系统,其特征在于,所述第二处理模块包括第二输出单元,具体包括:
第二输出单元,用于输出模板文件XXModel. m,定位到XXModel.m中的以第三占位符标识的第二类名片段,并将其替换为XXModel,定位到以第四占位符标识的第二属性声明片段,判断所述集合的内容是否为空,如果为空,则说明模型的所有属性命名符合iOS命名规范,删除第四占位符,输出XXModel.m文件;如果所述集合内容不为空,则说明模型的属性命名不符合iOS命名规范,在进行属性名映射后,输出XXModel.m文件。
CN201710041642.XA 2017-01-20 2017-01-20 一种模型生成方法和系统 Active CN106843878B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710041642.XA CN106843878B (zh) 2017-01-20 2017-01-20 一种模型生成方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710041642.XA CN106843878B (zh) 2017-01-20 2017-01-20 一种模型生成方法和系统

Publications (2)

Publication Number Publication Date
CN106843878A true CN106843878A (zh) 2017-06-13
CN106843878B CN106843878B (zh) 2019-10-25

Family

ID=59119842

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710041642.XA Active CN106843878B (zh) 2017-01-20 2017-01-20 一种模型生成方法和系统

Country Status (1)

Country Link
CN (1) CN106843878B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108196844A (zh) * 2018-01-04 2018-06-22 武汉斗鱼网络科技有限公司 信息处理方法、装置、电子设备及存储介质
CN109032662A (zh) * 2018-06-19 2018-12-18 上海陆家嘴国际金融资产交易市场股份有限公司 代码文件生成方法、装置、计算机设备和存储介质
CN109656550A (zh) * 2018-12-14 2019-04-19 平安城市建设科技(深圳)有限公司 json数据解析方法、装置、设备及可读存储介质
CN109857389A (zh) * 2019-01-14 2019-06-07 平安科技(深圳)有限公司 模型数据生成方法、装置、计算机设备及存储介质
CN110019350A (zh) * 2017-07-28 2019-07-16 北京京东尚科信息技术有限公司 基于配置信息的数据查询方法和装置
CN111145051A (zh) * 2019-11-26 2020-05-12 方正璞华软件(武汉)股份有限公司 一种仲裁电子文书的生成方法及装置
CN111580799A (zh) * 2020-04-09 2020-08-25 深圳壹账通智能科技有限公司 领域特定语言脚本拼装方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102937910A (zh) * 2011-08-16 2013-02-20 中广核(北京)仿真技术有限公司 控制算法跨平台转换系统及方法
CN102968306A (zh) * 2012-11-29 2013-03-13 广东全通教育股份有限公司 一种基于数据模型驱动的代码自动生成方法和系统
US20130318568A1 (en) * 2008-10-21 2013-11-28 Lookout Inc. Assessing a data object based on application data associated with the data object
CN103885754A (zh) * 2012-12-19 2014-06-25 北京融兴通达科技有限公司 一种数据模型自动生成系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318568A1 (en) * 2008-10-21 2013-11-28 Lookout Inc. Assessing a data object based on application data associated with the data object
CN102937910A (zh) * 2011-08-16 2013-02-20 中广核(北京)仿真技术有限公司 控制算法跨平台转换系统及方法
CN102968306A (zh) * 2012-11-29 2013-03-13 广东全通教育股份有限公司 一种基于数据模型驱动的代码自动生成方法和系统
CN103885754A (zh) * 2012-12-19 2014-06-25 北京融兴通达科技有限公司 一种数据模型自动生成系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张沪寅, 屈乾松, 胡瑞芸: "基于JSON的数据交换模型", 《计算机工程与设计》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110019350A (zh) * 2017-07-28 2019-07-16 北京京东尚科信息技术有限公司 基于配置信息的数据查询方法和装置
CN110019350B (zh) * 2017-07-28 2021-06-29 北京京东尚科信息技术有限公司 基于配置信息的数据查询方法和装置
CN108196844A (zh) * 2018-01-04 2018-06-22 武汉斗鱼网络科技有限公司 信息处理方法、装置、电子设备及存储介质
CN109032662A (zh) * 2018-06-19 2018-12-18 上海陆家嘴国际金融资产交易市场股份有限公司 代码文件生成方法、装置、计算机设备和存储介质
CN109656550A (zh) * 2018-12-14 2019-04-19 平安城市建设科技(深圳)有限公司 json数据解析方法、装置、设备及可读存储介质
CN109857389A (zh) * 2019-01-14 2019-06-07 平安科技(深圳)有限公司 模型数据生成方法、装置、计算机设备及存储介质
CN111145051A (zh) * 2019-11-26 2020-05-12 方正璞华软件(武汉)股份有限公司 一种仲裁电子文书的生成方法及装置
CN111580799A (zh) * 2020-04-09 2020-08-25 深圳壹账通智能科技有限公司 领域特定语言脚本拼装方法及系统

Also Published As

Publication number Publication date
CN106843878B (zh) 2019-10-25

Similar Documents

Publication Publication Date Title
CN106843878A (zh) 一种模型生成方法和系统
Marrs JSON at work: practical data integration for the web
Nentwich et al. Flexible consistency checking
US7240279B1 (en) XML patterns language
US7657832B1 (en) Correcting validation errors in structured documents
Van der Vlist Relax ng: A simpler schema language for xml
US7673235B2 (en) Method and apparatus for utilizing an object model to manage document parts for use in an electronic document
US7505991B2 (en) Semantic model development and deployment
US20040117739A1 (en) Generating rules to convert HTML tables to prose
US20100223214A1 (en) Automatic extraction using machine learning based robust structural extractors
US20180165253A1 (en) Information architecture for the interactive environment
WO2009007181A1 (en) A method, system and computer program for intelligent text annotation
US10394685B2 (en) Extensible markup language (XML) path (XPATH) debugging framework
Hankinson Optical music recognition infrastructure for large-scale music document analysis
Abba et al. Design and implementation of a CSV validation system
Veizaga et al. Leveraging natural-language requirements for deriving better acceptance criteria from models
Heineman et al. Thresh: A unified, customizable and deployable platform for fine-grained text evaluation
US20040064788A1 (en) System and method for generating source code for an XML application
Serafini Apache Solr beginner's guide
Veeramani et al. Abstract syntax tree based unified modeling language to object oriented code conversion
Rahtz et al. Reviewing the TEI ODD system
US20190034392A1 (en) Correlation across hierarchical serialization boundaries
US8719693B2 (en) Method for storing localized XML document values
Simic et al. Prospects of encoding Java source code in XML
KR20220003106A (ko) 컴퓨터-보조 컴퓨터 프로그래밍의 시스템 및 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant