CN107943483B - 一种iOS中数据正向解析方法 - Google Patents

一种iOS中数据正向解析方法 Download PDF

Info

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
Application number
CN201711185374.5A
Other languages
English (en)
Other versions
CN107943483A (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.)
Beijing Kuwo Technology Co Ltd
Original Assignee
Beijing Kuwo 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 Beijing Kuwo Technology Co Ltd filed Critical Beijing Kuwo Technology Co Ltd
Priority to CN201711185374.5A priority Critical patent/CN107943483B/zh
Publication of CN107943483A publication Critical patent/CN107943483A/zh
Application granted granted Critical
Publication of CN107943483B publication Critical patent/CN107943483B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

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中数据正向解析方法。
背景技术
在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中数据正向解析方法,其特征在于:类解析器最终返回类信息布局,
属性解析器最终返回属性布局,
变量解析器最终返回变量布局。
CN201711185374.5A 2017-11-23 2017-11-23 一种iOS中数据正向解析方法 Active CN107943483B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109656550A (zh) * 2018-12-14 2019-04-19 平安城市建设科技(深圳)有限公司 json数据解析方法、装置、设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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