[发明专利]通用C/C++结构化对象转换为JSON对象的代码生成方法与系统有效

专利信息
申请号: 202010961212.1 申请日: 2020-09-14
公开(公告)号: CN112114792B 公开(公告)日: 2023-09-22
发明(设计)人: 张利武;王军利;汤传乐;骆训浩;高子文 申请(专利权)人: 中国船舶重工集团公司第七0九研究所
主分类号: G06F8/30 分类号: G06F8/30;G06F8/41
代理公司: 深圳市六加知识产权代理有限公司 44372 代理人: 向彬
地址: 430000 湖北省*** 国省代码: 湖北;42
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 通用 c++ 结构 对象 转换 json 代码 生成 方法 系统
【权利要求书】:

1.一种通用C/C++结构化对象转换为JSON对象的代码生成方法,其特征在于,包括:

步骤S1:读取解析C/C++结构化对象的数据结构定义源代码文件,生成结构化对象逻辑结构元数据信息树,转入步骤S2;

步骤S2:创建空白JSON对象,作为元数据信息树的根节点对应的JSON对象,构造输出对应的代码语句,转入步骤S3;

步骤S3:从根节点开始深度遍历元数据信息树,根节点遍历顺序号设为1,转入步骤S4;

步骤S4:判断遍历是否结束,若遍历结束,转入步骤S11;若遍历未结束,转入步骤S5;

步骤S5:获取下一个遍历节点作为当前遍历节点,节点遍历顺序号加1,转入步骤S6;

步骤S6:判断当前遍历节点是否包括数组,若不包括数组,则转入步骤S7;若包括数组,则转入步骤S10;

步骤S7:判断当前遍历节点是否为叶子节点,若是叶子节点,转入步骤S8;若不是叶子节点,则当前遍历节点为复杂类型,转入步骤S9;

步骤S8:构造输出叶子节点转换代码,转入步骤S4;所述步骤S8中构造输出叶子节点转换代码,包括:获取从元数据信息树根节点到当前节点的最短路径,将最短路径上各节点成员的名称用“.”拼接,根节点成员名用待使用结构化对象的变量名代替,生成当前节点成员完整引用名;以当前节点成员名称和成员完整引用名直接构造JSON键值对;将JSON键值对加入当前节点的父节点对应的JSON对象,输出对应代码语句;

步骤S9:构造输出非叶子节点转换代码,转入步骤S4;所述步骤S9中构造输出非叶子节点转换代码,包括:创建新的空白JSON对象,作为当前节点对应的JSON对象,新创建的JSON对象变量名形如“jsonObjectX”,其中X为当前节点的遍历顺序号;以当前节点包含的成员名称和新创建的空白JSON对象构造JSON键值对;将创建的JSON键值对加入当前节点的父节点对应的JSON对象,输出对应代码语句;

步骤S10:构造输出数组成员节点转换代码,转入步骤S4;所述步骤S10中构造输出数组成员节点转换代码,包括:设数组为N维,N为正整数,下标分别为Index1,Index2,Index3,... IndexN,以N个数组下标分别作为循环控制范围,使用i1_X,i2_X,i3_X...iN_X作为循环控制变量,X为当前节点的遍历顺序号,构造循环语句,输出N层嵌套循环控制代码;在第P层循环体之前,创建新的JSON数组对象并初始化清空,作为第P层循环体对应的JSON数组对象,输出创建代码,各层循环体对应的JSON数组对象变量名形如“jsonArrayiP_X”,其中,P为1,2,3,...N,X为当前节点的遍历顺序号;在第N层循环体内,若当前节点成员为简单类型,直接将当前节点成员加入第N层循环体对应的JSON数组对象;若节点成员为复杂类型,创建新的JSON对象,变量名形如“jsonObjectX”,其中X为当前节点的遍历顺序号,作为当前节点对应的JSON对象,并加入第N层循环体对应的JSON数组对象;在第1层循环体之后,使用当前节点成员名称和第1层循环体对应的JSON数组对象构造键值对,加入当前节点的父节点对应的JSON对象;另外,若N大于1,则在第M层循环体之后,第M-1层循环体内,将第M层循环体对应的JSON数组对象加入第M-1层循环体对应的JSON数组对象中,其中2= M = N;

步骤S11:将根节点对应的JSON对象赋值给待转换的JSON对象,合并输出全部代码,代码生成结束。

2.如权利要求1所述的通用C/C++结构化对象转换为JSON对象的代码生成方法,其特征在于,所述最短路径上,若最短路径上某节点包含数组,则在拼接完整引用名时,在该节点成员名称后增加该节点的数组引用部分,形如“[i1_Y][i2_Y]…[iQ_Y]”,其中,Q为该节点成员的数组维数,Y为该节点的遍历顺序号。

3.如权利要求1或2所述的通用C/C++结构化对象转换为JSON对象的代码生成方法,其特征在于,所述叶子节点成员的数据类型为基本数据类型。

4.如权利要求3所述的通用C/C++结构化对象转换为JSON对象的代码生成方法,其特征在于,所述循环语句为for循环语句,或while循环语句,或do while循环语句,或foreach循环语句,或do until循环语句。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国船舶重工集团公司第七0九研究所,未经中国船舶重工集团公司第七0九研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202010961212.1/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top