CN107943483B - 一种iOS中数据正向解析方法 - Google Patents
一种iOS中数据正向解析方法 Download PDFInfo
- Publication number
- CN107943483B CN107943483B CN201711185374.5A CN201711185374A CN107943483B CN 107943483 B CN107943483 B CN 107943483B CN 201711185374 A CN201711185374 A CN 201711185374A CN 107943483 B CN107943483 B CN 107943483B
- Authority
- CN
- China
- Prior art keywords
- class
- data
- information
- analysis
- type
- 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.)
- Active
Links
Images
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)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种iOS中数据正向解析方法,包括如下步骤:步骤1,接收输入的数据;步骤2,接收指定的要转换的类;步骤3,对类进行正向解析处理,得到类解析信息;步骤4,读取预设协议;步骤5,根据类解析信息、预设协议,产生类解析map;步骤6,根据类解析信息产生对象;步骤7,开始解析数据。本发明,能自动的对数据类型、类、属性、变量、对象类型给予解析,算法统一性好,流程统一,解析准确度高,适于统一、标准化的完成正向解析。
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;
步骤6,根据类解析信息产生对象;
步骤7,开始解析数据。
在上述技术方案的基础上,步骤3具体包括:
获取类信息,通过类解析器实现,
获取类属性信息,通过属性解析器实现,
获取类变量信息,通过变量解析器实现,
获取类方法信息,
将以上四种信息汇总即得到类解析信息。
在上述技术方案的基础上,类解析器最终返回类信息布局,
属性解析器最终返回属性布局,
变量解析器最终返回变量布局。
在上述技术方案的基础上,步骤7具体包括:
步骤7.1,判断是否发现key对应的数据,所述key指关键字,
发现后,则进入数据类型解析器对类型进行判定;
如果数据类型正确,则根据key给产生的类对象赋值,
如果数据类型错误,则忽略数据,产生错误日志;
步骤7.2,判断数据是否解析完毕,
如果没有解析完毕,则返回步骤7.1,
如果已经解析完毕,则产生解析完毕的类对象;
步骤7.3,返回类对象。
在上述技术方案的基础上,数据类型解析器根据类型map,将数据类型转换为oc类型,并返回转换成功或转换失败信息。
本发明所述的iOS中数据正向解析方法,能自动的对数据类型、类、属性、变量、对象类型给予解析,算法统一性好,流程统一,解析准确度高,适于统一、标准化的完成正向解析。
附图说明
本发明有如下附图:
图1 本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的iOS中数据正向解析方法,包括如下步骤:
步骤1,接收输入的数据;
步骤2,接收指定的要转换的类;
步骤3,对类进行正向解析处理,得到类解析信息;
步骤4,读取预设协议;
如果不希望按类解析信息进行后续处理,则需要给出预设协议,指示按协议进行后续的解析;该协议包含了解析规则;
步骤5,根据类解析信息、预设协议,产生类解析map;
步骤6,根据类解析信息产生对象;
步骤7,开始解析数据。
在上述技术方案的基础上,步骤3具体包括:
获取类信息,通过类解析器实现,
获取类属性信息,通过属性解析器实现,
获取类变量信息,通过变量解析器实现,
获取类方法信息,
将以上四种信息汇总即得到类解析信息。
在上述技术方案的基础上,类解析器最终返回类信息布局,
属性解析器最终返回属性布局,
变量解析器最终返回变量布局。
在上述技术方案的基础上,步骤7具体包括:
步骤7.1,判断是否发现key对应的数据,所述key指关键字,
发现后,则进入数据类型解析器对类型进行判定;
如果数据类型正确,则根据key给产生的类对象赋值,
如果数据类型错误,则忽略数据,产生错误日志;
步骤7.2,判断数据是否解析完毕,
如果没有解析完毕,则返回步骤7.1,
如果已经解析完毕,则产生解析完毕的类对象;
步骤7.3,返回类对象。
在上述技术方案的基础上,数据类型解析器根据类型map,将数据类型转换为oc类型,并返回转换成功或转换失败信息。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (3)
1.一种iOS中数据正向解析方法,其特征在于,包括如下步骤:
步骤1,接收输入的数据;
步骤2,接收指定的要转换的类;
步骤3,对类进行正向解析处理,得到类解析信息;
步骤4,读取预设协议;
步骤5,根据类解析信息、预设协议,产生类解析map;
步骤6,根据类解析信息产生对象;
步骤7,开始解析数据;
步骤7具体包括:
步骤7.1,判断是否发现key对应的数据,所述key指关键字,
发现后,则进入数据类型解析器对类型进行判定;
如果数据类型正确,则根据key给产生的类对象赋值,
如果数据类型错误,则忽略数据,产生错误日志;
步骤7.2,判断数据是否解析完毕,
如果没有解析完毕,则返回步骤7.1,
如果已经解析完毕,则产生解析完毕的类对象;
步骤7.3,返回类对象;
数据类型解析器根据类型map,将数据类型转换为oc类型,并返回转换成功或转换失败信息。
2.如权利要求1所述的iOS中数据正向解析方法,其特征在于:步骤3具体包括:
获取类信息,通过类解析器实现,
获取类属性信息,通过属性解析器实现,
获取类变量信息,通过变量解析器实现,
获取类方法信息,
将以上四种信息汇总即得到类解析信息。
3.如权利要求2所述的iOS中数据正向解析方法,其特征在于:类解析器最终返回类信息布局,
属性解析器最终返回属性布局,
变量解析器最终返回变量布局。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711185374.5A CN107943483B (zh) | 2017-11-23 | 2017-11-23 | 一种iOS中数据正向解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711185374.5A CN107943483B (zh) | 2017-11-23 | 2017-11-23 | 一种iOS中数据正向解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107943483A CN107943483A (zh) | 2018-04-20 |
CN107943483B true CN107943483B (zh) | 2023-03-24 |
Family
ID=61930151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711185374.5A Active CN107943483B (zh) | 2017-11-23 | 2017-11-23 | 一种iOS中数据正向解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107943483B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656550A (zh) * | 2018-12-14 | 2019-04-19 | 平安城市建设科技(深圳)有限公司 | json数据解析方法、装置、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102170666A (zh) * | 2011-03-31 | 2011-08-31 | 北京新岸线无线技术有限公司 | 一种数据处理方法、装置及系统 |
CN102217281A (zh) * | 2011-06-13 | 2011-10-12 | 华为技术有限公司 | 协议解析方法及装置 |
CN104268143A (zh) * | 2014-08-08 | 2015-01-07 | 华迪计算机集团有限公司 | Xml数据的处理方法和装置 |
CN106649634A (zh) * | 2016-12-08 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 一种解析json数据的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7962495B2 (en) * | 2006-11-20 | 2011-06-14 | Palantir Technologies, Inc. | Creating data in a data store using a dynamic ontology |
US10015719B2 (en) * | 2016-02-29 | 2018-07-03 | Alcatel-Lucent | Downlink packet routing in a system-on-a-chip base station architecture |
-
2017
- 2017-11-23 CN CN201711185374.5A patent/CN107943483B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102170666A (zh) * | 2011-03-31 | 2011-08-31 | 北京新岸线无线技术有限公司 | 一种数据处理方法、装置及系统 |
CN102217281A (zh) * | 2011-06-13 | 2011-10-12 | 华为技术有限公司 | 协议解析方法及装置 |
CN104268143A (zh) * | 2014-08-08 | 2015-01-07 | 华迪计算机集团有限公司 | Xml数据的处理方法和装置 |
CN106649634A (zh) * | 2016-12-08 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 一种解析json数据的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107943483A (zh) | 2018-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2017101864A4 (en) | Method, device, server and storage apparatus of reviewing SQL | |
JP5690349B2 (ja) | レコード形式情報の管理 | |
CN110263009B (zh) | 日志分类规则的生成方法、装置、设备及可读存储介质 | |
US20210248060A1 (en) | Method and apparatus for testing map service | |
US20160092290A1 (en) | Processing data errors for a data processing system | |
CN112287009A (zh) | 接口调用和接口数据入库方法、装置、设备及存储介质 | |
US8904352B2 (en) | Systems and methods for processing source code during debugging operations | |
US20150089415A1 (en) | Method of processing big data, apparatus performing the same and storage media storing the same | |
US20230130019A1 (en) | Abstraction Layer for Efficient Transliteration of Machine Interpretable Languages | |
CN108388606B (zh) | 一种校验Sql语句中库表字段名的方法以及计算机设备 | |
CN112988873A (zh) | 一种数据处理方法和装置 | |
CN112783867A (zh) | 为满足实时大数据业务需求的数据库优化方法及云服务器 | |
US10606568B2 (en) | Method and apparatus for compiling computer language | |
CN112905620A (zh) | 数据查询方法及装置、电子设备、存储介质 | |
CN107943483B (zh) | 一种iOS中数据正向解析方法 | |
WO2016093839A1 (en) | Structuring of semi-structured log messages | |
CN109508204B (zh) | 一种前端代码质量检测方法及装置 | |
CN113515455B (zh) | 自动化测试方法以及系统 | |
CN108008957B (zh) | 一种iOS中数据反向解析方法 | |
CN114064601B (zh) | 存储过程转换方法、装置、设备和存储介质 | |
CN110058858B (zh) | 一种json数据处理方法及装置 | |
WO2022016363A1 (en) | Similar data set identification | |
CN115329151B (zh) | 图数据库的优化方法、装置、电子设备及存储介质 | |
US11586822B2 (en) | Adaptation of regular expressions under heterogeneous collation rules | |
CN116483377A (zh) | 一种代码检测方法、装置、电子设备及存储介质 |
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 |