CN108008957A - 一种iOS中数据反向解析方法 - Google Patents
一种iOS中数据反向解析方法 Download PDFInfo
- Publication number
- CN108008957A CN108008957A CN201711186128.1A CN201711186128A CN108008957A CN 108008957 A CN108008957 A CN 108008957A CN 201711186128 A CN201711186128 A CN 201711186128A CN 108008957 A CN108008957 A CN 108008957A
- Authority
- CN
- China
- Prior art keywords
- class
- data
- information
- parsing
- resolver
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种iOS中数据反向解析方法,包括如下步骤:步骤1,接收要转换的类;步骤2,接收要转换的类对象;步骤3,对类进行反向解析处理,得到类解析信息;步骤4,读取预设协议;步骤5,根据类解析信息、预设协议,产生类解析map;调用对象数据解析器,得到键值map;步骤6,开始解析数据。本发明,能自动的对对象数据、类、属性、变量、对象类型给予解析,算法统一性好,流程统一,解析准确度高,适于统一、标准化的完成反向解析。
Description
技术领域
本发明涉及iOS数据解析技术领域,具体说是一种iOS中数据反向解析方法。
背景技术
在iOS开发中,基本上都需要进行客户端和服务端的数据交互(数据传输),其中:
客户端作为前台,服务端作为后台,
客户端会向服务端发出request请求,此时,服务端会向客户端提供(返回)必要的数据(即response)。
通常,从服务端获取的数据为JSON数据(JavaScript Object Notation)。JSON数据是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,这些特性使其成为理想的数据交换语言。
JSON建构于两种结构:
1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hashtable),有键列表(keyed list),或者关联数组 (associative array)。
2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
客户端中的APP,在从服务端请求(获取)到所需JSON数据时,并不能直接使用这些数据,还需要转换为程序代码可认、可处理的数据类型,这一过程称为数据正向解析。
客户端中的APP,将需要保存的数据发送给服务端时,则需要数据反向解析,提供给服务端直接可处理的JSON数据。
在现有技术中,客户端需要逐个对字段、属性对应的数据进行正向或反向解析,不但操作繁琐,代码量也相当大,容易出现错误,不利于提高开发效率。不统一的处理流程极易带来难以发现的BUG,不利于后期对APP的维护和纠错。
另外,开发人员一般希望后台都返回字符串,这样可以使用诸如NSString *类型的变量来接收。但是,后台却往往是肆意返回各种类型的数据。究其原因,大多解释为有的数据不便于转换为字符串类型,于是返回的数据都是各种类型。这导致了以下问题的出现:
后台返回数值型数据给我们,而我们不清楚数据类型时,使用NSString来接收,则程序执赋值代码的时候,有可能崩溃,并报错误。
例如:后台返回的json数据是
data:{
peopleNum:12345
price:200
}
其中peopleNum和price均是数值型。
如果执行self.labPeopleNum.text=peopleNum;则会出现崩溃。
报错为:reason: '-[__NSCFNumber rangeOfCharacterFromSet:]:unrecognized selector sent to instance。
类似的情况还有返回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。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (5)
1.一种iOS中数据反向解析方法,其特征在于,包括如下步骤:
步骤1,接收要转换的类;
步骤2,接收要转换的类对象;
步骤3,对类进行反向解析处理,得到类解析信息;
步骤4,读取预设协议;
步骤5,根据类解析信息、预设协议,产生类解析map;调用对象数据解析器,得到键值map;
步骤6,开始解析数据。
2.如权利要求1所述的iOS中数据反向解析方法,其特征在于:步骤3具体包括:
获取类信息,通过类解析器实现,
获取类属性信息,通过属性解析器实现,
获取类变量信息,通过变量解析器实现,
获取类方法信息,
将以上四种信息汇总即得到类解析信息。
3.如权利要求2所述的iOS中数据反向解析方法,其特征在于:类解析器最终返回类信息布局,
属性解析器最终返回属性布局,
变量解析器最终返回变量布局。
4.如权利要求1所述的iOS中数据反向解析方法,其特征在于:步骤6具体包括:
步骤6.1,根据类对象数据和map,循环解析数据;
如果解析正确,则根据key给最终数据赋值,形成键值对,
如果解析错误,则忽略数据,产生错误日志;
步骤6.2,判断数据是否解析完毕,
如果没有解析完毕,则返回步骤6.1,
如果已经解析完毕,则产生解析完毕的kv数据流;
步骤6.3,返回解析完成的kv数据。
5.如权利要求4所述的iOS中数据反向解析方法,其特征在于:所述对象数据解析器,读取预设类型map,包括oc基础类型和基础数据类型,根据类解析器产生的数据读取对象信息,读取对象数据,将类信息和对象数据整合,产生键值map。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711186128.1A CN108008957B (zh) | 2017-11-23 | 2017-11-23 | 一种iOS中数据反向解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711186128.1A CN108008957B (zh) | 2017-11-23 | 2017-11-23 | 一种iOS中数据反向解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108008957A true CN108008957A (zh) | 2018-05-08 |
CN108008957B CN108008957B (zh) | 2023-01-17 |
Family
ID=62053605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711186128.1A Active CN108008957B (zh) | 2017-11-23 | 2017-11-23 | 一种iOS中数据反向解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108008957B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070169008A1 (en) * | 2005-07-29 | 2007-07-19 | Varanasi Sankara S | External programmatic interface for IOS CLI compliant routers |
CN102158482A (zh) * | 2011-03-10 | 2011-08-17 | 易程(苏州)软件股份有限公司 | 基于json数据协议的客运信息通信方法及系统 |
US20110213791A1 (en) * | 2006-11-20 | 2011-09-01 | Akash Jain | Creating data in a data store using a dynamic ontology |
US20130219394A1 (en) * | 2012-02-17 | 2013-08-22 | Kenneth Jerome GOLDMAN | System and method for a map flow worker |
CN103744656A (zh) * | 2013-12-23 | 2014-04-23 | 乐视网信息技术(北京)股份有限公司 | 一种数据解析方法及装置 |
CN105354020A (zh) * | 2015-09-30 | 2016-02-24 | 武汉钢铁(集团)公司 | 一种Json格式数据解析方法及数据接收端 |
US20160342399A1 (en) * | 2014-01-30 | 2016-11-24 | Shyam Sankar Gopalakrishnan | Persistent pointers for programs running on nvram based computers |
CN107861725A (zh) * | 2017-11-22 | 2018-03-30 | 北京酷我科技有限公司 | 一种iOS数据反向自动解析策略 |
-
2017
- 2017-11-23 CN CN201711186128.1A patent/CN108008957B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070169008A1 (en) * | 2005-07-29 | 2007-07-19 | Varanasi Sankara S | External programmatic interface for IOS CLI compliant routers |
US20110213791A1 (en) * | 2006-11-20 | 2011-09-01 | Akash Jain | Creating data in a data store using a dynamic ontology |
CN102158482A (zh) * | 2011-03-10 | 2011-08-17 | 易程(苏州)软件股份有限公司 | 基于json数据协议的客运信息通信方法及系统 |
US20130219394A1 (en) * | 2012-02-17 | 2013-08-22 | Kenneth Jerome GOLDMAN | System and method for a map flow worker |
CN103744656A (zh) * | 2013-12-23 | 2014-04-23 | 乐视网信息技术(北京)股份有限公司 | 一种数据解析方法及装置 |
US20160342399A1 (en) * | 2014-01-30 | 2016-11-24 | Shyam Sankar Gopalakrishnan | Persistent pointers for programs running on nvram based computers |
CN105354020A (zh) * | 2015-09-30 | 2016-02-24 | 武汉钢铁(集团)公司 | 一种Json格式数据解析方法及数据接收端 |
CN107861725A (zh) * | 2017-11-22 | 2018-03-30 | 北京酷我科技有限公司 | 一种iOS数据反向自动解析策略 |
Non-Patent Citations (1)
Title |
---|
小徐: "iOS逆向工程(手动HOOK自己编写的APP)- 学习整理", 《CSDN:HTTPS://BLOG.CSDN.NET/QQ_35790946/ARTICLE/DETAILS/54944791》 * |
Also Published As
Publication number | Publication date |
---|---|
CN108008957B (zh) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105868171B (zh) | 一种Excel文件的校验方法及装置 | |
US9152542B2 (en) | Automatic generation of test scripts | |
CN106294673A (zh) | 一种用户自定义规则实时解析日志数据的方法与系统 | |
CN108121542B (zh) | 一种基于MyBatis的SQL语句的配置方法、系统 | |
WO2016082468A1 (zh) | 数据图形化方法、装置及数据库服务器 | |
US20120089676A1 (en) | Live data form viewing and updating system | |
WO2018076815A1 (zh) | 格式转换方法及系统 | |
CN104699706A (zh) | 目录树的生成方法、装置及系统 | |
WO2017156916A1 (zh) | 数据访问方法和装置 | |
CN110554893B (zh) | 软件系统多语言适配方法、装置、设备及可读存储介质 | |
CN110096541B (zh) | 一种数据库间的数据交换方法及装置 | |
CN110737689B (zh) | 数据标准符合性检测方法、装置、系统及存储介质 | |
US20170032052A1 (en) | Graph data processing system that supports automatic data model conversion from resource description framework to property graph | |
JP2014527660A (ja) | レイアウトファイルにおける構造化情報の取得方法及び装置 | |
WO2021259290A1 (zh) | 存储过程转换方法、装置、设备和存储介质 | |
CN110555039A (zh) | 数据查询控制方法、存储介质、设备及系统 | |
CN105426305A (zh) | 一种控件属性解析系统及方法 | |
CN118093632B (zh) | 基于大语言模型和图结构的图数据库查询方法和装置 | |
CN105808510A (zh) | 一种调试数据校验方法及装置 | |
US9084131B2 (en) | Data cut-over method and apparatus | |
CN105335482A (zh) | 面向海量分布式数据库的批量插入方法 | |
JP2007122631A (ja) | プログラムの規約違反を判断する装置、およびその方法 | |
CN107943483A (zh) | 一种iOS中数据正向解析方法 | |
CN117520309A (zh) | 一种跨数据库类型的数据迁移方法、装置 | |
CN108008957A (zh) | 一种iOS中数据反向解析方法 |
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 |