CN105159928A - 一种json数据转换成模型数据的方法及系统 - Google Patents
一种json数据转换成模型数据的方法及系统 Download PDFInfo
- Publication number
- CN105159928A CN105159928A CN201510474611.4A CN201510474611A CN105159928A CN 105159928 A CN105159928 A CN 105159928A CN 201510474611 A CN201510474611 A CN 201510474611A CN 105159928 A CN105159928 A CN 105159928A
- Authority
- CN
- China
- Prior art keywords
- data
- model data
- json
- convert
- dictionary
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种JSON数据转换成模型数据的方法,该方法包括以下步骤:S1、将JSON数据序列化成字典或数组类型的数据;S2、使用运行时机制循环遍历该字典或数组类型的数据,获取其内存的首地址;S3、根据该首地址动态设置SEL方法,以定位对象;S4、使用消息机制动态地给对象发送消息,获取对象的属性值;S5、根据该属性值生成模型数据。本发明还提供了一种对应的系统。实施本发明,可以快速而高效地将JSON数据转换成模型数据,提高了运行效率。同时,在程序运行过程中动态修改类、对象中的属性和方法。此外,采用了运行时机制,程序的性能会更好,能满足终端高性能的要求,用户体验较好。
Description
技术领域
本发明涉及数据分析技术领域,更具体地说,涉及一种JSON数据转换成模型数据的方法及系统。
背景技术
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,易于人阅读和书写,易于机器解析和生成,可以被用来作为数据交换格式;同时,JSON是JavaScript规范的一个子集,采用完全独立语言的文本格式,并也使用了类似于C语言的习惯。因此,JSON适合于服务器与JavaScript的交互。
在移动开发应用时,服务器返回给客户端的数据一般都是JSON格式。作为前端开发者,当收到一JSON字符串时,需要将其转成自定义的模型数据再使用,如图1所示,当服务器返回的JSON数据比较单一情况时,采用现有技术可以快速实现数据解析;但是,当服务器返回的JSON数据很复杂时,如JSON中嵌套多层数据对象,使用现有技术无法高效的完成数据解析操作,此时,其解析的过程是耗时操作,会阻塞程序运行。
目前,现有技术中将JSON数据转成自定义的模型数据通常采用两种方法,其中,第一种方法为Key-Value法,即根据字典中对应的Key值获取出对应的Value值,具体包括步骤依次有:根据JSON字符串获取其内部的键值对;根据获取到的键值对,通过Key获取对应的数组;获取该数组中的键值对;根据获取到的数组的键值对,通过Key获取其内部的键值对中的值;根据Key值对应的Value值将该数组的键值对中的值赋值给对应的属性值。但是当模型数据的内部的属性越多时,采用此种方法,冗余的代码量就相应的增多,且代码不易维护。
第二种方法为KVC法,即键值编码,具体的实现步骤如图2所示,包括:将JSON字符串序列化;将序列化后的JSON字符串转换成字典类型数据或数组类型数据;判断字典中或数组中的数据类型是否为对象,若是,则继续判断,若否,则采用苹果提供的接口方法(即键值编码)将字典类型数据或数组类型数据转成模型数据,即给对象的属性赋值。但是,采用这种方法,只有遍历一模型中所有的成员变量后通过成员变量从字典中取出对应的值并赋值,否则,当模型中的属性数量与字典中的Key的数量不一样时,就会报错;同时,若对应的属性又是一个对象时,需要拦截set方法,并使用键值编码重写set方法。
由上述分析可知,上述两种方法均耗时,转模型数据的效率低;无法满足终端高性能的要求,且用户体验差。
发明内容
本发明要解决的技术问题在于,针对现有技术中将JSON数据转成自定义的模型数据的方法的不足,提供一种JSON数据转换成模型数据的方法及系统。
本发明解决上述问题的技术方案是提供了一种JSON数据转换成模型数据的方法,该方法包括以下步骤:
S1、将JSON数据序列化成字典或数组类型的数据;
S2、使用运行时机制循环遍历该字典或数组类型的数据,获取其内存的首地址;
S3、根据该首地址动态设置SEL方法,以定位对象;
S4、使用消息机制动态地给对象发送消息,获取对象的属性值;
S5、根据该属性值生成模型数据。
在上述的JSON数据转换成模型数据的方法中,该方法进一步包括:
S0、在客户端向服务器发送交互请求后,服务器返回JSON数据。
在上述的JSON数据转换成模型数据的方法中,该方法进一步包括:
S6、将生成的模型数据传递给客户端。
本发明还提供了一种JSON数据转换成模型数据的系统,该系统应用于客户端与服务器之间的交互,包括:
第一单元,用于将JSON数据序列化成字典或数组类型的数据;
第二单元,用于使用运行时机制循环遍历该字典或数组类型的数据,获取其内存的首地址;
第三单元,用于根据该首地址动态设置SEL方法,以定位对象;
第四单元,用于使用消息机制动态地给对象发送消息,获取对象的属性值;
第五单元,用于根据该属性值生成模型数据。
在上述的JSON数据转换成模型数据的系统中,所述客户端包括发送模块,用于向服务器发送交互请求,
在上述的JSON数据转换成模型数据的系统中,该系统进一步包括:
第六单元,用于将生成的模型数据传递给所述客户端。。
实施本发明的JSON数据转换成模型数据的方法及系统的有益效果有:可以快速而高效地将JSON数据转换成模型数据,提高了运行效率。同时,在程序运行过程中动态修改类、对象中的属性和方法。此外,采用了运行时机制,程序的性能会更好,能满足终端高性能的要求,用户体验较好。
附图说明
图1是网络数据传输过程的示意图。
图2是现有的键值编码法将JSON数据转成自定义的模型数据的流程图。
图3是本发明的JSON数据转换成模型数据的方法实施例的流程图。
图4是本发明的JSON数据转换成模型数据的系统实施例的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图3所示,是本发明的JSON数据转换成模型数据的方法实施例的流程图。该方法包括以下步骤:
S1、将JSON数据序列化成字典或数组类型的数据;
其中,序列化(Serialization)是将对象状态转换为可保持或传输的格式的过程。
S2、使用运行时机制循环遍历该字典或数组类型的数据,获取其内存的首地址;
其中,运行时机制是更底层的语言。
S3、根据该首地址动态设置SEL方法,以定位对象;
S4、使用消息机制动态地给对象发送消息,获取对象的属性值;
S5、根据该属性值生成模型数据。
在步骤S5中,获取到的属性值与模型数据的比例关系为1,即属性值为模型数据。
在本实施例中,在移动开发应用程序时,经常使用Objective-C,其是编写iOS操作系统的应用程序或Android操作系统的应用程序的利器。由于Objective-C是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法,因此,使用运行时机制,可以在程序运行时动态修改类、对象中的所有属性和方法。同时,运行时机制是更底层的语言,Objective-C代码在运行时,编译器内部先将其转换为C和C++代码,再执行该C和C++代码,从而使用运行时机制,程序的性能更好。
在本实施例中,该方法进一步包括:
S0、在客户端向服务器发送交互请求后,服务器返回JSON数据。
在本实施例中,该方法进一步包括:
S6、将生成的模型数据传递给客户端。
本发明的将JSON数据转换成模型数据的方法可以快速而高效地将JSON数据转换成模型数据,提高了运行效率。同时,在程序运行过程中动态修改类、对象中的属性和方法。此外,采用了运行时机制,程序的性能会更好,能满足终端高性能的要求,用户体验较好。
如图4所示,是本发明的JSON数据转换成模型数据的系统实施例的结构示意图。该系统应用于客户端与服务器之间的交互,包括:
第一单元101,用于将JSON数据序列化成字典或数组类型的数据;
其中,序列化(Serialization)是将对象状态转换为可保持或传输的格式的过程。
第二单元102,用于使用运行时机制循环遍历该字典或数组类型的数据,获取其内存的首地址;
其中,运行时机制是更底层的语言。
第三单元103,用于根据该首地址动态设置SEL方法,以定位对象;
第四单元104,用于使用消息机制动态地给对象发送消息,获取对象的属性值;
第五单元,用于根据该属性值生成模型数据。
在步骤S5中105,获取到的属性值与模型数据的比例关系为1,即属性值为模型数据。
在本实施例中,由于Objective-C是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法,因此,使用运行时机制,可以在程序运行时动态修改类、对象中的所有属性和方法。同时,运行时机制是更底层的语言,Objective-C代码在运行时,编译器内部先将其转换为C和C++代码,再执行该C和C++代码,从而使用运行时机制,程序的性能更好。
在本实施例中,客户端包括发送模块,用于向服务器发送交互请求,在客户端发送请求后,服务器返回JSON数据。
在本实施例中,该系统进一步包括:
第六单元(图中未示出),用于将生成的模型数据传递给客户端。
本发明的将JSON数据转换成模型数据的系统可以快速而高效地将JSON数据转换成模型数据,提高了运行效率。同时,在程序运行过程中动态修改类、对象中的属性和方法。此外,采用了运行时机制,程序的性能会更好,能满足终端高性能的要求,用户体验较好。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (6)
1.一种JSON数据转换成模型数据的方法,其特征在于,该方法包括以下步骤:
S1、将JSON数据序列化成字典或数组类型的数据;
S2、使用运行时机制循环遍历该字典或数组类型的数据,获取其内存的首地址;
S3、根据该首地址动态设置SEL方法,以定位对象;
S4、使用消息机制动态地给对象发送消息,获取对象的属性值;
S5、根据该属性值生成模型数据。
2.根据权利要求1中所述的JSON数据转换成模型数据的方法,其特征在于,该方法进一步包括:
S0、在客户端向服务器发送交互请求后,服务器返回JSON数据。
3.根据权利要求1中所述的JSON数据转换成模型数据的方法,其特征在于,该方法进一步包括:
S6、将生成的模型数据传递给客户端。
4.一种JSON数据转换成模型数据的系统,该系统应用于客户端与服务器之间的交互,其特征在于,包括:
第一单元,用于将JSON数据序列化成字典或数组类型的数据;
第二单元,用于使用运行时机制循环遍历该字典或数组类型的数据,获取其内存的首地址;
第三单元,用于根据该首地址动态设置SEL方法,以定位对象;
第四单元,用于使用消息机制动态地给对象发送消息,获取对象的属性值;
第五单元,用于根据该属性值生成模型数据。
5.根据权利要求4中所述的JSON数据转换成模型数据的系统,其特征在于,所述客户端包括发送模块,用于向服务器发送交互请求。
6.根据权利要求4中所述的JSON数据转换成模型数据的系统,其特征在于,该系统进一步包括:
第六单元,用于将生成的模型数据传递给所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510474611.4A CN105159928B (zh) | 2015-08-05 | 2015-08-05 | 一种json数据转换成模型数据的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510474611.4A CN105159928B (zh) | 2015-08-05 | 2015-08-05 | 一种json数据转换成模型数据的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105159928A true CN105159928A (zh) | 2015-12-16 |
CN105159928B CN105159928B (zh) | 2019-04-23 |
Family
ID=54800785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510474611.4A Active CN105159928B (zh) | 2015-08-05 | 2015-08-05 | 一种json数据转换成模型数据的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105159928B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649634A (zh) * | 2016-12-08 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 一种解析json数据的方法及装置 |
CN108170408A (zh) * | 2016-12-05 | 2018-06-15 | 北京国双科技有限公司 | Js对象定义的生成方法及装置 |
CN108196844A (zh) * | 2018-01-04 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 信息处理方法、装置、电子设备及存储介质 |
CN108388423A (zh) * | 2018-02-26 | 2018-08-10 | 中车青岛四方机车车辆股份有限公司 | 一种ios数据对象转换方法及装置 |
CN108694041A (zh) * | 2017-03-06 | 2018-10-23 | 武汉斗鱼网络科技有限公司 | 数据转换方法、装置及服务终端 |
CN109714418A (zh) * | 2018-12-27 | 2019-05-03 | 北京潘达互娱科技有限公司 | 接口返回数据的比对方法、计算设备 |
CN109800388A (zh) * | 2017-11-17 | 2019-05-24 | 车伯乐(北京)信息科技有限公司 | 一种json数据的编辑方法,装置及系统 |
CN109857389A (zh) * | 2019-01-14 | 2019-06-07 | 平安科技(深圳)有限公司 | 模型数据生成方法、装置、计算机设备及存储介质 |
CN110764768A (zh) * | 2018-07-26 | 2020-02-07 | 北京京东金融科技控股有限公司 | 一种模型对象与json对象互转的方法和装置 |
CN111045685A (zh) * | 2019-11-05 | 2020-04-21 | 贝壳技术有限公司 | 代码转换方法、装置、存储介质及电子设备 |
CN112328231A (zh) * | 2020-10-14 | 2021-02-05 | 远江盛邦(北京)网络安全科技股份有限公司 | python字典和结构体间的快速转换方法 |
CN112612427A (zh) * | 2020-12-30 | 2021-04-06 | 北京优挂信息科技有限公司 | 一种车辆停靠点数据处理方法、装置、存储介质及终端 |
CN113504896A (zh) * | 2021-07-12 | 2021-10-15 | 云南腾云信息产业有限公司 | 一种应用程序的业务数据处理方法、装置及移动终端 |
CN114745428A (zh) * | 2022-03-14 | 2022-07-12 | 许继电气股份有限公司 | 一种换流站监控数据模型快速读写方法及装置 |
CN115146053A (zh) * | 2021-03-29 | 2022-10-04 | 武汉斗鱼鱼乐网络科技有限公司 | 一种信息展示方法及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593194A (zh) * | 2013-11-21 | 2014-02-19 | 北京国双科技有限公司 | 对象序列化方法和装置 |
CN103605518A (zh) * | 2013-11-19 | 2014-02-26 | 北京国双科技有限公司 | 对象反序列化方法和装置 |
US20150134670A1 (en) * | 2013-11-08 | 2015-05-14 | Oracle International Corporation | Generic Indexing for Efficiently Supporting Ad-Hoc Query Over Hierarchically Marked-Up Data |
-
2015
- 2015-08-05 CN CN201510474611.4A patent/CN105159928B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150134670A1 (en) * | 2013-11-08 | 2015-05-14 | Oracle International Corporation | Generic Indexing for Efficiently Supporting Ad-Hoc Query Over Hierarchically Marked-Up Data |
CN103605518A (zh) * | 2013-11-19 | 2014-02-26 | 北京国双科技有限公司 | 对象反序列化方法和装置 |
CN103593194A (zh) * | 2013-11-21 | 2014-02-19 | 北京国双科技有限公司 | 对象序列化方法和装置 |
Non-Patent Citations (3)
Title |
---|
JXNWZB: ""用KVC自动把JSON转Model"", 《CSDN》 * |
SAM-007: ""IOS中使用KVC实现JSON数据与Objective-C实体对象之间的转换"", 《CSDN》 * |
XIAODAOKUAILAI: ""【iOS】KVC和KVO的使用场景"", 《CSDN》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170408A (zh) * | 2016-12-05 | 2018-06-15 | 北京国双科技有限公司 | Js对象定义的生成方法及装置 |
CN106649634A (zh) * | 2016-12-08 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 一种解析json数据的方法及装置 |
CN108694041A (zh) * | 2017-03-06 | 2018-10-23 | 武汉斗鱼网络科技有限公司 | 数据转换方法、装置及服务终端 |
CN109800388A (zh) * | 2017-11-17 | 2019-05-24 | 车伯乐(北京)信息科技有限公司 | 一种json数据的编辑方法,装置及系统 |
CN108196844A (zh) * | 2018-01-04 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 信息处理方法、装置、电子设备及存储介质 |
CN108388423A (zh) * | 2018-02-26 | 2018-08-10 | 中车青岛四方机车车辆股份有限公司 | 一种ios数据对象转换方法及装置 |
CN110764768A (zh) * | 2018-07-26 | 2020-02-07 | 北京京东金融科技控股有限公司 | 一种模型对象与json对象互转的方法和装置 |
CN109714418A (zh) * | 2018-12-27 | 2019-05-03 | 北京潘达互娱科技有限公司 | 接口返回数据的比对方法、计算设备 |
CN109857389A (zh) * | 2019-01-14 | 2019-06-07 | 平安科技(深圳)有限公司 | 模型数据生成方法、装置、计算机设备及存储介质 |
CN111045685A (zh) * | 2019-11-05 | 2020-04-21 | 贝壳技术有限公司 | 代码转换方法、装置、存储介质及电子设备 |
CN112328231A (zh) * | 2020-10-14 | 2021-02-05 | 远江盛邦(北京)网络安全科技股份有限公司 | python字典和结构体间的快速转换方法 |
CN112328231B (zh) * | 2020-10-14 | 2024-02-23 | 远江盛邦(北京)网络安全科技股份有限公司 | python字典和结构体间的快速转换方法 |
CN112612427A (zh) * | 2020-12-30 | 2021-04-06 | 北京优挂信息科技有限公司 | 一种车辆停靠点数据处理方法、装置、存储介质及终端 |
CN115146053A (zh) * | 2021-03-29 | 2022-10-04 | 武汉斗鱼鱼乐网络科技有限公司 | 一种信息展示方法及相关设备 |
CN113504896A (zh) * | 2021-07-12 | 2021-10-15 | 云南腾云信息产业有限公司 | 一种应用程序的业务数据处理方法、装置及移动终端 |
CN113504896B (zh) * | 2021-07-12 | 2023-08-18 | 云南腾云信息产业有限公司 | 一种应用程序的业务数据处理方法、装置及移动终端 |
CN114745428A (zh) * | 2022-03-14 | 2022-07-12 | 许继电气股份有限公司 | 一种换流站监控数据模型快速读写方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105159928B (zh) | 2019-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105159928A (zh) | 一种json数据转换成模型数据的方法及系统 | |
US10515155B2 (en) | Conversational agent | |
JP2022180519A (ja) | 画像処理方法、画像処理モデルのトレーニング方法、装置及び記憶媒体 | |
KR102441475B1 (ko) | 질문 분석 방법, 장치, 지식 기반 질문 응답 시스템 및 전자 기기 | |
US9378237B2 (en) | Methods for in-place access of serialized data | |
US9619449B2 (en) | Compact encoding of node locations | |
CN110852449B (zh) | 模型迁移方法和电子设备 | |
Larsen et al. | Strawman: A batch in situ visualization and analysis infrastructure for multi-physics simulation codes | |
CN105138613A (zh) | 一种业务对象和xml报文相互转换的方法及系统 | |
CN104657140A (zh) | 代码生成方法及装置 | |
TW201504947A (zh) | 一種跨平臺轉換應用代碼的方法及裝置 | |
CN104731569A (zh) | 一种数据处理方法及相关设备 | |
Kyusakov et al. | Exip: A framework for embedded web development | |
US20200050589A1 (en) | Performing a code conversion in a smaller target encoding space | |
CN103077038B (zh) | 动态生成和编译.net项目的方法 | |
CN104765603A (zh) | 应用程序构建方法及装置 | |
KR102561951B1 (ko) | 모델링 매개 변수의 설정 방법, 장치, 전자 기기 및 기록 매체 | |
CN105022619A (zh) | 一种代码数据处理方法及装置 | |
CN104750472A (zh) | 一种终端应用的资源包管理方法和装置 | |
JP2023027194A (ja) | 翻訳方法、装置、電子機器、可読記憶媒体、及びコンピュータープログラム | |
US20170131980A1 (en) | Model driven architecture for network management and configuration | |
CN104077374B (zh) | 一种实现ip盘文件存储的方法及装置 | |
EP3525107A1 (en) | Conversational agent | |
CN105786529B (zh) | 一种类托管代码调用c/c++风格函数的复杂结构的参数设计方法 | |
CN104679660A (zh) | 基于符号表的嵌入式系统调试方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |