一种IOS数据对象转换方法及装置与流程

文档序号:15143667发布日期:2018-08-10 20:11阅读:196来源:国知局

本发明实施例涉及计算机技术领域,尤其涉及一种ios数据对象转换方法及装置。



背景技术:

随着宽带无线接入技术和移动终端技术的飞速发展,越来越多的人们开始使用智能手机和平板电脑来方便快捷的使用移动互联网服务。移动应用的开发过程中网络编程应用的越来越多,数据的应用在开发过程中越来越重要。

现有的数据解析是将网络数据解析成nsdictionary格式的数据,在数据调用时都是直接字典格式数据的字典名称字符串进行调用,这样在开发过程中调用多了后就会造成维护麻烦的问题,因为一旦名称错误,在编译过程中无法发现问题,这样会使应用变得不易于维护,降低的程序开发的效率。



技术实现要素:

本发明实施例提供一种ios数据对象转换方法及装置,用以解决现有技术中用户开发过程中调用多了后就会造成维护麻烦的问题,因为一旦名称错误,在编译过程中无法发现问题,这样会使应用变得不易于维护,降低的程序开发的效率。

第一方面,本发明实施例提供了一种ios数据对象转换方法,包括:

接收由服务器发送的json数据,所述json数据至少包括一个键值和对应的数值;

根据预存的数据对象类得到数据对象,所述数据对象至少包括一个属性和对应的属性值;其中所述数据对象包含的属性与所述json数据包含的键值一一对应;

根据所述数据对象类中的遍历属性的方法,依次调取与所述属性相对应的键值的数值作为所述属性的属性值。

第二方面,本发明实施例提供了一种ios数据对象转换装置,其特征在于,包括:

接收模块,用于接收由服务器发送的json数据,所述json数据至少包括一个键值和对应的数值;

转换模块,用于根据预存的数据对象类得到数据对象,所述数据对象至少包括一个属性和对应的属性值;其中所述数据对象包含的属性与所述json数据包含的键值一一对应;

赋值模块,用于根据所述数据对象类中的遍历属性的方法,依次调取与所述属性相对应的键值的数值作为所述属性的属性值。

第三方面,本发明实施例还提供了一种电子设备,包括:

处理器、存储器、通信接口和总线;其中,

所述处理器、存储器、通信接口通过所述总线完成相互间的通信;

所述通信接口用于该电子设备的通信设备之间的信息传输;

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:

接收由服务器发送的json数据,所述json数据至少包括一个键值和对应的数值;

根据预存的数据对象类得到数据对象,所述数据对象至少包括一个属性和对应的属性值;其中所述数据对象包含的属性与所述json数据包含的键值一一对应;

根据所述数据对象类中的遍历属性的方法,依次调取与所述属性相对应的键值的数值作为所述属性的属性值。

第四方面,本发明实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下方法:

接收由服务器发送的json数据,所述json数据至少包括一个键值和对应的数值;

根据预存的数据对象类得到数据对象,所述数据对象至少包括一个属性和对应的属性值;其中所述数据对象包含的属性与所述json数据包含的键值一一对应;

根据所述数据对象类中的遍历属性的方法,依次调取与所述属性相对应的键值的数值作为所述属性的属性值。

本发明实施例提供的ios数据对象转换方法及装置,通过将所述json数据转换为数据对象,并通过预设的遍历属性的方法,将所述json数据中的数值快速、准确得赋值给所述数据对象中的属性。

附图说明

图1为本发明实施例的ios数据对象转换方法流程图;

图2为本发明实施例的ios数据对象转换装置的结构示意图;

图3为本发明实施例的电子设备结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例的ios数据对象转换方法流程图,图1所示,所述方法包括:

步骤s01、接收由服务器发送的json数据,所述json数据至少包括一个键值和对应的数值。

根据客户端的请求,服务器会向客户端发送相应的数据,对于ios系统,服务器向客户端发送的数据为js对象标记(javascriptobjectnotation,json)数据,其中所述json数据采用键值编码方法(keyvaluecoding,kvc),具体形式为key:value,如下所示:

{"name":"张三",

"age":"23",

"sex":"男",

"school":"幸福中学"}。

上述代码中的"name"、"age"、"sex"和"school"为键值,而"张三"、"23"、"男"和"幸福中学"分别为与键值对应的数值。

步骤s02、根据预存的数据对象类得到数据对象,所述数据对象至少包括一个属性和对应的属性值;其中所述数据对象包含的属性与所述json数据包含的键值一一对应。

客户端根据预存的数据对象类生成数据对象,具体可以通过数据对象类中初始化的方法来生成数据对象obj。其中所述数据对象包括有多个属性和与每个属性相对应的属性值,其中所述属性值可以根据初始化的方法赋于初始值。所述数据对象包括的属性与json数据包括的键值一一对应。以上述json数据的代码为例,所述数据对象obj的属性也包括有obj.name、obj.age、obj.sex和obj.school,具体的命名方式,可以是相同的,也可以通过一定的映射关系而不同,在此不作具体的限定。

步骤s03、根据所述数据对象类中的遍历属性的方法,依次调取与所述属性相对应的键值的数值作为所述属性的属性值。

所述数据对象类中还包括有遍历属性的方法,客户端会调用该遍历属性的方法,依次调取所述数据对象中的属性,并在json数据中找到与所述属性对应的键值,并提取与所述键值对应的数值,将所述数值赋给对应属性的属性值。例如,以上述json数据的代码为例,所述对应数据对象的属性"name"、"age"、"sex"和"school",将分别赋值为"张三"、"23"、"男"和"幸福中学"。

本发明实施例通过将所述json数据转换为数据对象,并通过预设的遍历属性的方法,将所述json数据中的数值快速、准确得赋值给所述数据对象中的属性。

基于上述实施例,进一步地,所述方法还包括:

定义所述数据对象类的父类,其中所述父类至少包括所述遍历属性的方法;

根据所述父类和所述json数据的格式得到所述数据对象类。

为了得到所述数据对象类,需要先定义所述数据对象类的父类,所述父类至少包括遍历属性的方法,该方法可以通过返回类中属性的名称和对应的属性值来实现。所述父类还包括有基本的初始化方法,可以从其中的数据结构初始化类的对象,例如可以从json数据、字典数据或者本地化的字典数据初始化。

由于服务器可能包含有多个接口,每个接口都发会根据客户端的请求发送特定的json数据,所对应的键值和格式根据每个接口的需求而不同,例如接口1是年级成员信息接口,接口2是班级成员信息接口,接口3是小组成员信息接口等。每个接口发送的json数据包括有约定的数据信息从而具有特定的格式。根据所述父类和每个接口发送的json数据的格式可以得到对应的数据对象类。

所述数据对象类的继承了来自所述父类的遍历属性的方法和初始化的方法。由于json数据中的普通key:value形式声明为类属性nsstring类型,key:{}形式声明为数据对象类型,key:[]形式声明为数组形式,同时数组中允许存储的数据类型也为数据对象类型,所以数据对象类的属性只可以声明为字符串类型、数组类型、数据对象的类型、以及继承自所述父类的类型。

从而根据每个接口发送的json数据以及对应的数据对象类,可以将json数据转换为对应的数据对象来获取数据信息。

本发明实施例通过定义数据对象类的父类,并根据json数据的格式得到对应的数据对象类,然后将所述json数据转换为数据对象,并通过预设的遍历属性的方法,将所述json数据中的数值快速、准确得赋值给所述数据对象中的属性。

基于上述实施例,进一步地,所述根据所述父类和所述json数据的格式得到所述数据对象类;具体为:

根据所述父类和所述json数据的格式通过xcode插件得到所述数据对象类。

在由定义的父类和json数据的格式得到对应的数据对象类的过程,可以通过预先设计的xcode插件来实现,将每个接口发送的json数据写入到插件中,插件就会自动根据json数据的格式生成对应的数据对象类,并且还可以根据实际的需要在具体的代码中为数据对象的属性添加好注释,以方便后续的应用。

本发明实施例通过xcode插件根据输入的json数据简单、快速得得到对应的数据对象类,然后再根据所述数据对象类将所述json数据转换为数据对象,并通过预设的遍历属性的方法,将所述json数据中的数值快速、准确得赋值给所述数据对象中的属性。

基于上述实施例,进一步地,所述父类还包括发送数据请求的方法,相应地,所述方法还包括:

向所述服务器发送数据请求。

在客户端需要数据信息时,会先向所述服务器的某个接口发送数据请求,以期能够访问服务器提供的对应的接口数据,然后由服务器将对应的接口数据以json数据的形式发送给客户端。该发送数据请求的方法可以使用系统自带的,也可以使用第三方的网络请求,具体可以作为所述父类的发送数据请求的方法,然后在生成对应的数据对象类时继承。

本发明实施例通过在所述父类中加入发送数据请求方法,使客户端根据自身的需要先发送数据请求,然后将接收到的所述json数据转换为数据对象,并通过预设的遍历属性的方法,将所述json数据中的数值快速、准确得赋值给所述数据对象中的属性。

基于上述实施例,进一步地,所述步骤s02-s03具体为:

将所述json数据转换为字典格式数据;其中所述字典格式数据的字典名称和索引值分别与所述json数据的键值和数值一一对应;

根据预存的数据对象类,将所述字典格式数据转换为数据对象;其中所述数据对象的属性和属性值分别与所述字典名称和索引值一一对应。

在实际的应用中,所述客户端在接收到json数据时会先将所述json数据转换为字典nsdictionary格式数据,其中所述所述字典格式数据中包含的字典名称和索引值分别与所述json数据的键值和数值一一对应。

然后客户端会再根据预先得到的数据对象类,通过初始化的方法得到对应数据对象,其中所述数据对象包含的属性与所述nsdictionary格式数据中的字典名称一一对应,也就是相当于与所述json数据中的键值一一对应。

通过遍历属性的方法,在nsdictionary数据中依次找到与数据对象内的属性相对应的字典名称,然后通过与该字典名称相对应的索引值对该属性对应的属性值进行赋值。最终完成所有赋值后的数据对象就可以使用了,在应用中正常调用即可,从而可以从容应对大数据量接口访问使用数据复杂的问题。

本发明实施例通过将所述json数据转换字典格式数据,再将字典格式数据转换为数据对象,并通过预设的遍历属性的方法,将所述json数据中的数值快速、准确得赋值给所述数据对象中的属性。

图2为本发明实施例的ios数据对象转换装置的结构示意图,如图2所示,所述装置包括:接收模块10、转换模块11和赋值模块12;其中,

所述接收模块10用于接收由服务器发送的json数据,所述json数据至少包括一个键值和对应的数值;所述转换模块11用于根据预存的数据对象类得到数据对象,所述数据对象至少包括一个属性和对应的属性值;其中所述数据对象包含的属性与所述json数据包含的键值一一对应;所述赋值模块12用于根据所述数据对象类中的遍历属性的方法,依次调取与所述属性相对应的键值的数值作为所述属性的属性值。具体地:

根据请求,服务器会向接收模块10发送相应的数据,对于ios系统,服务器向接收模块10发送的数据为js对象标记(javascriptobjectnotation,json)数据,其中所述json数据采用键值编码方法(keyvaluecoding,kvc),由多个键值key和对应的数值value组成,具体形式为key:value。

接收模块10将所述json数据发送给转换模块11,由所述转换模块11根据预存的数据对象类生成数据对象,具体可以通过数据对象类中初始化的方法来生成数据对象obj。其中所述数据对象包括有多个属性和与每个属性相对应的属性值,其中所述属性值可以根据初始化的方法赋于初始值。所述数据对象包括的属性与json数据包括的键值一一对应。然后所述转换模块11将生成的数据对象发送给所述赋值模块12。

根据所述数据对象类中包括的遍历属性的方法,赋值模块12调用该遍历属性的方法,依次调取所述数据对象中的属性,并在json数据中找到与所述属性对应的键值,并提取与所述键值对应的数值,将所述数值赋给对应属性的属性值。

本发明实施例提供的装置用于执行上述方法,其功能具体参考上述方法实施例,其具体方法流程在此处不再赘述。

本发明实施例通过将所述json数据转换为数据对象,并通过预设的遍历属性的方法,将所述json数据中的数值快速、准确得赋值给所述数据对象中的属性。

基于上述实施例,进一步地,所述装置还包括:

父类模块,用于定义所述数据对象类的父类,其中所述父类至少包括所述遍历属性的方法;

存储模块,用于根据所述父类和所述json数据的格式得到所述数据对象类。

为了得到所述数据对象类,需要先在父类模块中定义所述数据对象类的父类,所述父类至少包括遍历属性的方法,该方法可以通过返回类中属性的名称和对应的属性值来实现。所述父类还包括有基本的初始化方法,可以从其中的数据结构初始化类的对象,例如可以从json数据、字典数据或者本地化的字典数据初始化。

由于服务器可能包含有多个接口,每个接口都发会根据客户端的请求发送特定的json数据,所对应的键值和格式根据每个接口的需求而不同。每个接口发送的json数据包括有约定的数据信息从而具有特定的格式。所述存储模块根据由父类模块中得到的所述父类和每个接口发送的json数据的格式可以得到对应的数据对象类。

所述数据对象类的继承了来自所述父类的遍历属性的方法和初始化的方法。由于json数据中的普通key:value形式声明为类属性nsstring类型,key:{}形式声明为数据对象类型,key:[]形式声明为数组形式,同时数组中允许存储的数据类型也为数据对象类型,所以数据对象类的属性只可以声明为字符串类型、数组类型、数据对象的类型、以及继承自所述父类的类型。

从而根据每个接口发送的json数据以及对应的数据对象类,可以将json数据转换为对应的数据对象来获取数据信息。

本发明实施例提供的装置用于执行上述方法,其功能具体参考上述方法实施例,其具体方法流程在此处不再赘述。

本发明实施例通过定义数据对象类的父类,并根据json数据的格式得到对应的数据对象类,然后将所述json数据转换为数据对象,并通过预设的遍历属性的方法,将所述json数据中的数值快速、准确得赋值给所述数据对象中的属性。

基于上述实施例,进一步地,所述存储模块具体用于,根据所述父类和所述json数据的格式通过xcode插件得到所述数据对象类。

在所述存储模块中由定义的父类和json数据的格式得到对应的数据对象类的过程,可以通过预先设计的xcode插件来实现,将每个接口发送的json数据写入到插件中,插件就会自动根据json数据的格式生成对应的数据对象类,并且还可以根据实际的需要在具体的代码中为数据对象的属性添加好注释,以方便后续的应用。

本发明实施例提供的装置用于执行上述方法,其功能具体参考上述方法实施例,其具体方法流程在此处不再赘述。

本发明实施例通过xcode插件根据输入的json数据简单、快速得得到对应的数据对象类,然后再根据所述数据对象类将所述json数据转换为数据对象,并通过预设的遍历属性的方法,将所述json数据中的数值快速、准确得赋值给所述数据对象中的属性。

图3为本发明实施例的电子设备结构示意图。如图3所示,所述电子设备,包括:处理器(processor)601、存储器(memory)602和总线603;

其中,所述处理器601和所述存储器602通过所述总线603完成相互间的通信;

所述处理器601用于调用所述存储器602中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:接收由服务器发送的json数据,所述json数据至少包括一个键值和对应的数值;根据预存的数据对象类得到数据对象,所述数据对象至少包括一个属性和对应的属性值;其中所述数据对象包含的属性与所述json数据包含的键值一一对应;根据所述数据对象类中的遍历属性的方法,依次调取与所述属性相对应的键值的数值作为所述属性的属性值。

进一步地,本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收由服务器发送的json数据,所述json数据至少包括一个键值和对应的数值;根据预存的数据对象类得到数据对象,所述数据对象至少包括一个属性和对应的属性值;其中所述数据对象包含的属性与所述json数据包含的键值一一对应;根据所述数据对象类中的遍历属性的方法,依次调取与所述属性相对应的键值的数值作为所述属性的属性值。

进一步地,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收由服务器发送的json数据,所述json数据至少包括一个键值和对应的数值;根据预存的数据对象类得到数据对象,所述数据对象至少包括一个属性和对应的属性值;其中所述数据对象包含的属性与所述json数据包含的键值一一对应;根据所述数据对象类中的遍历属性的方法,依次调取与所述属性相对应的键值的数值作为所述属性的属性值。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的电子设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1