CN104615458B - 一种基于json数据格式模块加载的方法及系统 - Google Patents
一种基于json数据格式模块加载的方法及系统 Download PDFInfo
- Publication number
- CN104615458B CN104615458B CN201410851468.1A CN201410851468A CN104615458B CN 104615458 B CN104615458 B CN 104615458B CN 201410851468 A CN201410851468 A CN 201410851468A CN 104615458 B CN104615458 B CN 104615458B
- Authority
- CN
- China
- Prior art keywords
- module
- file
- functional module
- json data
- function
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及应用程序处理领域,尤其涉及一种基于json数据格式模块加载的方法及系统。其方法包括:S100、创建json数据格式的功能文件,所述功能文件包括一个以上有序的功能模块,所述功能模块包括第一功能模块;S200、主程序读取所述功能文件,形成文件流;S300、解析步骤S200所得文件流,读取第一功能模块,加载第一功能模块;S400、运行步骤S300所加载的第一功能模块。通过读取功能文件,形成文件流,解析文件流,读取功能模块,并加载和运行功能模块,实现模块动态加载,通过本发明提供的方法及系统,能够灵活的加载命令和对象、自由控制命令的执行顺序,也有利于系统功能的扩展。
Description
技术领域
本发明涉及应用程序处理领域,尤其涉及一种基于json数据格式模块加载的方法及系统。
背景技术
现有技术中,动态加载为动态加载脚本并直接运行,这样的动态加载方式不够灵活,受限于脚本语言本身。因为动态加载脚本方式,是一次性把脚本内的命令都执行完成,不能自由的停留在某一命令中,因此,执行命令不够灵活。且脚本里描述的是命令,没有对自定义对象进行描述的功能,不能描述或执行命令和对象相结合的情况。
模块加载方法一般是通过程序内部逻辑调用加载,也就是说是固定的加载方法。比如:老师讲课时,想先让同学进行朗读再做题,就需要用到朗读模块和发题模块,并且设置的顺序是先执行朗读模块后执行发题模块,程序就会先加载朗读模块然后再加载发题模块,但是如果下节课的另一个老师想先发题后朗读,或者先发两道题,再进行朗读。如果用程序内部逻辑进行加载就需要修改程序代码,而且每堂课都很有可能会不一样,那就需要给每堂课开发一款软件,这明显是不现实的,所以需要一种动态加载模块的方式。
发明内容
本发明所要解决的技术问题是:提供一种能够灵活的加载命令和对象、自由控制命令的执行顺序基于json数据格式模块加载的方法及系统。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于json数据格式模块加载的方法,包括以下步骤:
S100、创建json数据格式的功能文件,所述功能文件包括一个以上有序的功能模块,所述功能文件包括第一功能模块;
S200、主程序读取所述功能文件,形成文件流;
S300、解析步骤S200所得文件流,读取第一功能模块,加载第一功能模块;
S400、运行步骤S300所加载的第一功能模块。
本发明采用的另一技术方案为:
一种基于json数据格式模块加载的系统,包括:编辑器、第一读取单元、解析器、第二读取单元、加载单元和运行器;
所述编辑器,用于创建json数据格式的功能文件,所述功能文件包括一个以上有序的功能模块,所述功能模块包括第一功能模块;
所述第一读取单元,用于主程序读取所述功能文件,形成文件流;
所述解析器,用于解析所述文件流;
所述第二读取单元,用于读取第一功能模块;
所述加载单元,用于加载第一功能模块;
所述运行器,用于运行所加载的第一功能模块。
本发明的有益效果在于:通过读取功能文件,形成文件流,解析文件流,读取功能模块,并加载和运行功能模块,实现模块动态加载,通过本发明提供的方法及系统,能够灵活的加载命令和对象、自由控制命令的执行顺序,也有利于系统功能的扩展。
附图说明
图1为本发明具体实施方式的基于json数据格式模块加载的方法的步骤图;
图2为本发明具体实施方式的基于json数据格式模块加载的系统的结构示意图;
标号说明:
10、编辑器;20、第一读取单元;30、解析器;40、第二读取单元;50、加载单元;60、运行器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:通过读取功能文件,形成文件流,解析文件流,读取功能模块,并加载和运行功能模块,实现模块动态加载。
请参照图1,为本发明具体实施方式的基于json数据格式模块加载的方法的步骤图,具体如下:
一种基于json数据格式模块加载的方法,包括以下步骤:
S100、创建json数据格式的功能文件,所述功能文件包括一个以上有序的功能模块,所述功能文件包括第一功能模块;
S200、主程序读取所述功能文件,形成文件流;
S300、解析步骤S200所得文件流,读取第一功能模块,加载第一功能模块;
S400、运行步骤S300所加载的第一功能模块。
从上述描述可知,本发明的有益效果在于:通过读取功能文件,形成文件流,解析文件流,读取功能模块,并加载和运行功能模块,实现模块动态加载,通过本发明提供的方法,能够灵活的加载命令和对象、自由控制命令的执行顺序,也有利于系统功能的扩展。
进一步的,所述步骤S100还包括:预设一存储单元,用于存储所述功能文件。
由上述描述可知,通过预设一存储单元,将创建的功能文件放置在指定位置,便于主程序读取。
进一步的,所述功能模块为数据、事件或动作。所述文件流为功能文件的二进制代码。
由上述描述可知,所述功能模块为数据、事件或动作,通过动态加载,所呈现的效果不一样,实现动态目的。
进一步的,所述步骤S400具体为:预设一显示界面,运行步骤S300所加载的功能模块,并显示在所述显示界面上。
由上述描述可知,通过预设一显示界面,可用于显示运行结果。
进一步的,方法还包括所述步骤S500具体为:判断是否所有功能模块已运行,若是,结束步骤;若否,返回步骤S300。
进一步的,所述步骤S300的功能模块加载过程为:
S301、主程序创建一模块对象列表,初始化预设模块位置;
S302、主程序读取json数据文件模块位置的json对象,返回json对象的标签下模块名称和模块属性对应的属性值,所述模块名称的属性值为N,所述模块属性的属性值为A;
S303、主程序根据步骤S302所得N和A创建模块对象;
S304、主程序将步骤S303所得模块对象加入到对象列表中,所述对象列表长度加1;
S305、主程序判断所述模块位置的长度是否大于对象列表的长度,如果所述模块位置的长度大于对象列表的长度,则返回到步骤S302,执行步骤S302到步骤S304;如果小于或等于对象列表的长度,则进入步骤S306;
S306、主程序加载步骤S305的模块位置的对象列表。
请参照图2,为本发明具体实施方式的基于json数据格式模块加载的系统的结构示意图,具体如下:
一种基于json数据格式模块加载的系统,包括:编辑器10、第一读取单元20、解析器30、第二读取单元40、加载单元50和运行器60;
所述编辑器10,用于创建json数据格式的功能文件,所述功能文件包括一个以上有序的功能模块,所述功能模块包括第一功能模块;
所述第一读取单元20,用于主程序读取所述功能文件,形成文件流;
所述解析器30,用于解析所述文件流;
所述第二读取单元40,用于读取第一功能模块;
所述加载单元50,用于加载第一功能模块;
所述运行器60,用于运行所加载的第一功能模块。
从上述描述可知,本发明的有益效果在于:通过读取功能文件,形成文件流,解析文件流,读取功能模块,并加载和运行功能模块,实现模块动态加载,通过本发明提供的系统,能够灵活的加载命令和对象、自由控制命令的执行顺序,也有利于系统功能的扩展。
进一步的,系统还包括存储单元,用于存储功能文件。
由上述描述可知,通过预设一存储单元,将创建的功能文件放置在指定位置,便于主程序读取。
进一步的,系统还包括显示单元,用于将运行后的功能模块,显示在所述显示界面上。
由上述描述可知,通过预设一显示界面,可用于显示运行结果。
进一步的,系统还包括判断单元,用于判断是否所有功能模块已运行。
实施例一
步骤1、创建、编辑json数据格式的功能文件,并放置指定位置,所述功能文件包含一系列功能模块,且所述功能模块是有序的;
步骤2、主程序从指定位置读取功能文件,形成文件流;
步骤3、解析文件流,根据自定义格式读取一功能模块;
步骤4、根据主程序的需要,动态加载一功能模块,然后根据主程序的需要动态加载功能模块;
(1)根据标志一个模块一个模块的解析,这样做是为了节约内存,因为模块包含图片,声音等资源;
(2)根据用户行为,顺序或逆序加载功能模块。
功能模块定义:具有相对独立(自包含)功能,有具体的页面显示功能,且不能脱离主程序,必须由主程序进行解析运行,所述功能模块包含数据、事件和动作,本身无执行的权限,需要依赖于主程序。
主程序定义:是处理json数据文件的核心,包含一个解析器和一个运行器,解析器就是将json转化为功能模块且不是将整个文件转化,而是根据用户行为将一个模块一个模块的转化,运行器作用在于执行功能模块;
解析器定义:用于解析json数据流,并转化为功能模块;
运行器定义:用于加载功能模块,并显示到界面上。
步骤4(2):顺序或逆序加载功能模块,包含如下步骤:
步骤401:主程序创建一模块对象列表,初始化预设模块位置;
步骤402:主程序读取json数据文件模块位置的json对象,返回json对象的标签下模块名称和模块属性对应的属性值,所述模块名称的属性值为N,所述模块属性的属性值为A;
步骤403:主程序根据步骤402所得N和A创建模块对象;
步骤404:主程序将步骤403所得模块对象加入到对象列表中,所述对象列表长度加1;
步骤405:主程序判断所述模块位置的长度是否大于对象列表的长度,如果所述模块位置的长度大于对象列表的长度,则返回到步骤402,执行步骤402到步骤404;如果小于或等于对象列表的长度,则进入步骤406;
步骤406:主程序加载步骤405的模块位置的对象列表。
本发明总体的思路为:
通过编辑器,用json的数据格式编辑功能模块列表并生成文件,将文件放入指定目录,主程序动态从指定目录获取文件流,通过解析文件流,生成功能模块列表,根据主程序的需要将模块动态加入主程序界面,成为主程序界面的一部分。
本发明总体的效果为:可以更加灵活的加载命令和对象,且可以自由控制命令的执行顺序,有利于系统功能的扩展,例如当我要改变一个功能,只需要在主程序写一个类,然后编写相应的功能,通过json数据文件就可以使用新的功能,不需要修改系统的任何地方,只需要添加一个类;充分实现了松散耦合。
老师讲课需要让学生进行朗读和做题。首先先创建一个包含两个模块的json文件,并将其存储于SD卡,主程序读取SD卡上的json文件形成文件流。主程序创建一个模块对象列表,初始化位置为1,然后主程序读取json文件的第一个json对象,对象包含了朗读模块的名称和属性,然后将json对象的朗读模块转化为模块对象,加入到模块对象列表,模块对象列表长度变为1,因为模块的初始化位置1等于模块对象列表的长度,所以主程序将朗读模块加载进来,当老师需要进行下一模块的时候,将位置加1变为2,然后读取json文件的第二个json对象并转为模块对象加入模块对象列表,对象列表的长度变为2,因为模块的位置2等于模块对象列表的长度,所以主程序就将做题模块加载进来。
综上所述,本发明提供的一种基于json数据格式模块加载的方法及系统,通过读取功能文件,形成文件流,解析文件流,读取功能模块,并加载和运行功能模块,实现模块动态加载,通过本发明提供的方法及系统,能够灵活的加载命令和对象、自由控制命令的执行顺序,也有利于系统功能的扩展。通过预设一存储单元,将创建的功能文件放置在指定位置,便于主程序读取。所述功能模块为数据、事件或动作,通过动态加载,所呈现的效果不一样,实现动态目的。通过预设一显示界面,可用于显示运行结果。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种基于json数据格式模块加载的方法,其特征在于,包括以下步骤:
步骤S100、创建json数据格式的功能文件,所述功能文件包括一个以上有序的功能模块,所述功能模块包括第一功能模块;
步骤S200、主程序读取所述功能文件,形成文件流;
步骤S300、解析步骤S200所得文件流,读取第一功能模块,加载第一功能模块;
步骤S400、运行步骤S300所加载的第一功能模块;
其中,
所述步骤S300的功能模块加载过程为:
步骤S301、主程序创建一模块对象列表,初始化预设模块位置;
步骤S302、主程序读取json数据文件模块位置的json对象,返回json对象的标签下模块名称和模块属性对应的属性值,所述模块名称的属性值为N,所述模块属性的属性值为A;
步骤S303、主程序根据步骤S302所得N和A创建模块对象;
步骤S304、主程序将步骤S303所得模块对象加入到对象列表中,所述对象列表长度加1;
步骤S305、主程序判断所述模块位置的长度是否大于对象列表的长度,如果所述模块位置的长度大于对象列表的长度,则返回到步骤S302,执行步骤S302到步骤S304;如果小于或等于对象列表的长度,则进入步骤S306;
步骤S306、主程序加载步骤S305的模块位置的对象列表。
2.根据权利要求1所述的基于json数据格式模块加载的方法,其特征在于,所述步骤S100还包括:预设一存储单元,用于存储所述功能文件。
3.根据权利要求1所述的基于json数据格式模块加载的方法,其特征在于,所述功能模块为数据、事件或动作;所述文件流为功能文件的二进制代码。
4.根据权利要求1所述的基于json数据格式模块加载的方法,其特征在于,所述步骤S400具体为:预设一显示界面,运行步骤S300所加载的功能模块,并显示在所述显示界面上。
5.根据权利要求1所述的基于json数据格式模块加载的方法,其特征在于,方法还包括步骤S500,具体为:判断是否所有功能模块已运行,若是,结束步骤;若否,返回步骤S300。
6.一种基于json数据格式模块加载的系统,其特征在于,包括:编辑器、第一读取单元、解析器、第二读取单元、加载单元和运行器;
所述编辑器,用于创建json数据格式的功能文件,所述功能文件包括一个以上有序的功能模块,所述功能模块包括第一功能模块;
所述第一读取单元,用于主程序读取所述功能文件,形成文件流;
所述解析器,用于解析所述文件流;
所述第二读取单元,用于读取第一功能模块;
所述加载单元,用于加载第一功能模块;
所述运行器,用于运行所加载的第一功能模块。
7.根据权利要求6所述的基于json数据格式模块加载的系统,其特征在于,系统还包括存储单元,用于存储功能文件。
8.根据权利要求6所述的基于json数据格式模块加载的系统,其特征在于,系统还包括显示单元,用于将运行后的功能模块,显示在所述显示单元上。
9.根据权利要求6所述的基于json数据格式模块加载的系统,其特征在于,系统还包括判断单元,用于判断是否所有功能模块已运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410851468.1A CN104615458B (zh) | 2014-12-31 | 2014-12-31 | 一种基于json数据格式模块加载的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410851468.1A CN104615458B (zh) | 2014-12-31 | 2014-12-31 | 一种基于json数据格式模块加载的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104615458A CN104615458A (zh) | 2015-05-13 |
CN104615458B true CN104615458B (zh) | 2017-10-31 |
Family
ID=53149917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410851468.1A Active CN104615458B (zh) | 2014-12-31 | 2014-12-31 | 一种基于json数据格式模块加载的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104615458B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108810045B (zh) * | 2017-04-28 | 2021-03-16 | 武汉斗鱼网络科技有限公司 | 基于Json文件的Flash应用更新方法及系统 |
CN110442406B (zh) * | 2018-05-02 | 2022-08-12 | 北京京东乾石科技有限公司 | 分页控件处理数据的方法及分页控件、电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102323887A (zh) * | 2011-06-30 | 2012-01-18 | 中兴通讯股份有限公司 | 基于浏览器引擎的动态加载Widget的方法及移动终端 |
CN102955694A (zh) * | 2011-08-31 | 2013-03-06 | 中国电信股份有限公司 | 基于WebKit 浏览器的客户端实现方法以及客户端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8776078B2 (en) * | 2008-05-20 | 2014-07-08 | International Business Machines Corporation | Method for dynamically freeing computer resources |
-
2014
- 2014-12-31 CN CN201410851468.1A patent/CN104615458B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102323887A (zh) * | 2011-06-30 | 2012-01-18 | 中兴通讯股份有限公司 | 基于浏览器引擎的动态加载Widget的方法及移动终端 |
CN102955694A (zh) * | 2011-08-31 | 2013-03-06 | 中国电信股份有限公司 | 基于WebKit 浏览器的客户端实现方法以及客户端 |
Non-Patent Citations (1)
Title |
---|
电子课本学习地图生成工具设计与实现;齐贵超;《中国优秀硕士学位论文全文数据库社会科学Ⅱ辑》;20131215(第S2期);第37-38页,第41-43页,第46-48页,第52-55页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104615458A (zh) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103064403B (zh) | 一种ecu硬件在环仿真自动化测试方法和系统 | |
CN102207887B (zh) | 一种嵌入式操作系统快速移植方法及其装置 | |
CN106469140A (zh) | 一种报表生成系统及其方法 | |
US20100138808A1 (en) | Embedded system design device and a method thereof using a target independent model | |
CN101894039A (zh) | 一种嵌入式设备驱动程序辅助生成方法及系统 | |
CN103336805A (zh) | 一种基于图形化映射关系的定制报表自动生成方法及装置 | |
WO2009114999A1 (zh) | 文档处理方法、系统及装置 | |
CN106326194A (zh) | 一种应用于文件格式转换场景下的目录生成方法和装置 | |
CN107463126A (zh) | 无人机双核控制系统及数据读取与写入方法 | |
CN102591787B (zh) | Java卡的数据处理方法及装置 | |
CN105550354A (zh) | 一种配置文件管理的方法和系统 | |
CN105743736A (zh) | 自动化测试方法及系统 | |
CN104615458B (zh) | 一种基于json数据格式模块加载的方法及系统 | |
CN104985939A (zh) | 一种激光打标机控制方法和激光打标机 | |
CN103309849B (zh) | 一种基于OpenXML的docx文档创建和修改方法 | |
EP1821221A1 (en) | Document processing device and document processing method | |
CN106484412A (zh) | 一种基于访问器劫持的前端数据双向绑定实现方法 | |
CN104049947A (zh) | 基于动态重命名的矢量寄存器堆的寄存器重新配置 | |
CN107562464A (zh) | 一种命令行接口的调用方法、装置及设备 | |
CN110187886A (zh) | 一种文档网站生成方法及终端 | |
Pohja | COMPARISON OF COMMON XML-BASED WEB USER INTERFACE LANGUAGESCOMPARISON OF COMMON XML-BASED WEB USER INTERFACE LANGUAGES | |
CN103389893B (zh) | 一种配置寄存器读写方法及装置 | |
CN103325360B (zh) | 一种字段式lcd显示方法 | |
CN105718434A (zh) | 一种自然语言公式编辑方法和系统 | |
CN103530353B (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 |