一种iOS中数据反向解析方法与流程

文档序号:14389741阅读:194来源:国知局
本发明涉及ios数据解析
技术领域
:,具体说是一种ios中数据反向解析方法。
背景技术
::在ios开发中,基本上都需要进行客户端和服务端的数据交互(数据传输),其中:客户端作为前台,服务端作为后台,客户端会向服务端发出request请求,此时,服务端会向客户端提供(返回)必要的数据(即response)。通常,从服务端获取的数据为json数据(javascriptobjectnotation)。json数据是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,这些特性使其成为理想的数据交换语言。json建构于两种结构:1.“名称/值”对的集合(acollectionofname/valuepairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hashtable),有键列表(keyedlist),或者关联数组(associativearray)。2.值的有序列表(anorderedlistofvalues)。在大部分语言中,它被理解为数组(array)。客户端中的app,在从服务端请求(获取)到所需json数据时,并不能直接使用这些数据,还需要转换为程序代码可认、可处理的数据类型,这一过程称为数据正向解析。客户端中的app,将需要保存的数据发送给服务端时,则需要数据反向解析,提供给服务端直接可处理的json数据。在现有技术中,客户端需要逐个对字段、属性对应的数据进行正向或反向解析,不但操作繁琐,代码量也相当大,容易出现错误,不利于提高开发效率。不统一的处理流程极易带来难以发现的bug,不利于后期对app的维护和纠错。另外,开发人员一般希望后台都返回字符串,这样可以使用诸如nsstring*类型的变量来接收。但是,后台却往往是肆意返回各种类型的数据。究其原因,大多解释为有的数据不便于转换为字符串类型,于是返回的数据都是各种类型。这导致了以下问题的出现:后台返回数值型数据给我们,而我们不清楚数据类型时,使用nsstring来接收,则程序执赋值代码的时候,有可能崩溃,并报错误。例如:后台返回的json数据是data:{peoplenum:12345price:200}其中peoplenum和price均是数值型。如果执行self.labpeoplenum.text=peoplenum;则会出现崩溃。报错为:reason:'-[__nscfnumberrangeofcharacterfromset:]:unrecognizedselectorsenttoinstance。类似的情况还有返回null数据时,会出现程序崩溃的情况。技术实现要素:针对现有技术中存在的缺陷,本发明的目的在于提供一种ios中数据反向解析方法,能自动的对对象数据、类、属性、变量、对象类型给予解析,算法统一性好,流程统一,解析准确度高,适于统一、标准化的完成反向解析。为达到以上目的,本发明采取的技术方案是:一种ios中数据反向解析方法,其特征在于,包括如下步骤:步骤1,接收要转换的类;步骤2,接收要转换的类对象;步骤3,对类进行反向解析处理,得到类解析信息;步骤4,读取预设协议;步骤5,根据类解析信息、预设协议,产生类解析map;调用对象数据解析器,得到键值map;步骤6,开始解析数据。在上述技术方案的基础上,步骤3具体包括:获取类信息,通过类解析器实现,获取类属性信息,通过属性解析器实现,获取类变量信息,通过变量解析器实现,获取类方法信息,将以上四种信息汇总即得到类解析信息。在上述技术方案的基础上,类解析器最终返回类信息布局,属性解析器最终返回属性布局,变量解析器最终返回变量布局。在上述技术方案的基础上,步骤6具体包括:步骤6.1,根据类对象数据和map,循环解析数据;如果解析正确,则根据key给最终数据赋值,形成键值对,如果解析错误,则忽略数据,产生错误日志;步骤6.2,判断数据是否解析完毕,如果没有解析完毕,则返回步骤6.1,如果已经解析完毕,则产生解析完毕的kv数据流;步骤6.3,返回解析完成的kv数据。在上述技术方案的基础上,所述对象数据解析器,读取预设类型map,包括oc基础类型和基础数据类型,根据类解析器产生的数据读取对象信息,读取对象数据,将类信息和对象数据整合,产生键值map。本发明所述的ios中数据反向解析方法,能自动的对对象数据、类、属性、变量、对象类型给予解析,算法统一性好,流程统一,解析准确度高,适于统一、标准化的完成反向解析。附图说明本发明有如下附图:图1本发明的流程图。具体实施方式以下结合附图对本发明作进一步详细说明。如图1所示,本发明所述的ios中数据反向解析方法,包括如下步骤:步骤1,接收要转换的类;步骤2,接收要转换的类对象;步骤3,对类进行反向解析处理,得到类解析信息;步骤4,读取预设协议;如果不希望按类解析信息进行后续处理,则需要给出预设协议,指示按协议进行后续的解析;该协议包含了解析规则;步骤5,根据类解析信息、预设协议,产生类解析map;调用对象数据解析器,得到键值map;步骤6,开始解析数据。在上述技术方案的基础上,步骤3具体包括:获取类信息,通过类解析器实现,获取类属性信息,通过属性解析器实现,获取类变量信息,通过变量解析器实现,获取类方法信息,将以上四种信息汇总即得到类解析信息。在上述技术方案的基础上,类解析器最终返回类信息布局,属性解析器最终返回属性布局,变量解析器最终返回变量布局。在上述技术方案的基础上,步骤6具体包括:步骤6.1,根据类对象数据和map,循环解析数据;如果解析正确,则根据key给最终数据赋值,形成键值对,如果解析错误,则忽略数据,产生错误日志;步骤6.2,判断数据是否解析完毕,如果没有解析完毕,则返回步骤6.1,如果已经解析完毕,则产生解析完毕的kv数据流;步骤6.3,返回解析完成的kv数据。在上述技术方案的基础上,所述对象数据解析器,读取预设类型map,包括oc基础类型和基础数据类型,根据类解析器产生的数据读取对象信息,读取对象数据,将类信息和对象数据整合,产生键值map。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1