数据生成实体类解决方案

news2024/11/23 18:45:53

文章目录

  • 数据生成实体类解决方案
    • 简介
    • 工作原理
    • 解析`JSON`生成实体类
      • 示例`JSON`消息
      • 解析`JSON`核心方法:
      • 调用示例:
      • 将数据保存到实体类中。
      • 将实体类转为输出为`JSON`。
    • 思考

数据生成实体类解决方案

直接将xml导入到Studio里即可。下载文件连接:

  • CSDN链接
  • 阿里云盘

简介

  • 在我们做接口时,都会遇到各种格式的数据文档,每次都要解析文档,拆分数据、并按需要保存到我们自己的表结构中。
  • 如果内容很复杂,层次结构多,手动编写成是实体类对于开发来说工作量还是比较大的。
  • 基于此,笔者通过这篇文章介绍一下适合于IRIS的数据生成实体类的使用方法,类似于Java框架LombokfastjsonGsonFormat的功能。

工作原理

  1. 解析数据结构。
  2. 根据数据结构生成对应实体类。
  3. 将数据保存到实体类对象。
  4. 将实体类数据输出为对应数据结构。

解析JSON生成实体类

示例JSON消息

{
	"problems": [{
		"Diabetes": [{
			"medications": [{
				"medicationsClasses": [{
					"className": [{
						"associatedDrug": [{
							"name": "asprin",
							"dose": "",
							"strength": "500 mg"
						}]
					}],
					"className2": [{
						"associatedDrug": [{
							"name": "asprin",
							"dose": "",
							"strength": "500 mg"
						}]
					}]
				}]
			}],
			"labs": [{
				"missing_field": "missing_value"
			}]
		}],
		"Asthma": [{}]
	}]
}

解析JSON核心方法:

ClassMethod Json2EntityClass(json As %String, className As %String) As %Status

其中:

  • json - 传入的json字符串或json对象。
  • className - 生成的类的完全限定名,包名 + 类名。

调用示例:

w ##class(Util.GenerateClassUtils).Json2EntityClass(##class(Util.GenerateClassUtils).JsonDemo(), "M.EntityClass.Demo")

在这里插入图片描述

USER>w ##class(Util.GenerateClassUtils).Json2EntityClass(##class(Util.GenerateClassUtils).JsonDemo(), "M.EntityClass.Demo")2023-07-02 16:38:05上启动了编译
编译类 M.EntityClass.Demo.problems.Diabetes.medications.medicationsClasses.className.associatedDrug
正在编译表 M_EntityClass_Demo_problems_Diabetes_medications_medicationsClasses_className.associatedDrug
正在编译routine M.EntityClass.Demo.problems.Diabetes.medications.medicationsClasses.className.associatedDrug.1
0.077s中已成功完成编译.2023-07-02 16:38:05上启动了编译
编译类 M.EntityClass.Demo.problems.Diabetes.medications.medicationsClasses.className
正在编译表 M_EntityClass_Demo_problems_Diabetes_medications_medicationsClasses.className
正在编译routine M.EntityClass.Demo.problems.Diabetes.medications.medicationsClasses.className.1
0.086s中已成功完成编译.2023-07-02 16:38:05上启动了编译
编译类 M.EntityClass.Demo.problems.Diabetes.medications.medicationsClasses.className2.associatedDrug
正在编译表 M_EntityClass_Demo_problems_Diabetes_medications_medicationsClasses_className2.associatedDrug
正在编译routine M.EntityClass.Demo.problems.Diabetes.medications.medicationsClasses.className2.associatedDrug.1
0.100s中已成功完成编译.2023-07-02 16:38:05上启动了编译
编译类 M.EntityClass.Demo.problems.Diabetes.medications.medicationsClasses.className2
正在编译表 M_EntityClass_Demo_problems_Diabetes_medications_medicationsClasses.className2
正在编译routine M.EntityClass.Demo.problems.Diabetes.medications.medicationsClasses.className2.1                                           0.075s中已成功完成编译.2023-07-02 16:38:05上启动了编译
编译类 M.EntityClass.Demo.problems.Diabetes.medications.medicationsClasses
正在编译表 M_EntityClass_Demo_problems_Diabetes_medications.medicationsClasses
正在编译routine M.EntityClass.Demo.problems.Diabetes.medications.medicationsClasses.1
0.078s中已成功完成编译.2023-07-02 16:38:06上启动了编译
编译类 M.EntityClass.Demo.problems.Diabetes.medications
正在编译表 M_EntityClass_Demo_problems_Diabetes.medications
正在编译routine M.EntityClass.Demo.problems.Diabetes.medications.1
0.086s中已成功完成编译.2023-07-02 16:38:06上启动了编译
编译类 M.EntityClass.Demo.problems.Diabetes.labs
正在编译表 M_EntityClass_Demo_problems_Diabetes.labs
正在编译routine M.EntityClass.Demo.problems.Diabetes.labs.1
0.070s中已成功完成编译.2023-07-02 16:38:06上启动了编译
编译类 M.EntityClass.Demo.problems.Diabetes
正在编译表 M_EntityClass_Demo_problems.Diabetes
正在编译routine M.EntityClass.Demo.problems.Diabetes.1
0.078s中已成功完成编译.2023-07-02 16:38:06上启动了编译
编译类 M.EntityClass.Demo.problems.Asthma
正在编译表 M_EntityClass_Demo_problems.Asthma
正在编译routine M.EntityClass.Demo.problems.Asthma.1
0.059s中已成功完成编译.2023-07-02 16:38:06上启动了编译
编译类 M.EntityClass.Demo.problems
正在编译表 M_EntityClass_Demo.problems
正在编译routine M.EntityClass.Demo.problems.1
0.083s中已成功完成编译.2023-07-02 16:38:06上启动了编译
编译类 M.EntityClass.Demo
正在编译表 M_EntityClass.Demo
正在编译routine M.EntityClass.Demo.1
0.070s中已成功完成编译.
1

将数据保存到实体类中。

ClassMethod SaveJson2Entity(json As %String, className As %String) As %Status

其中:

  • json - 传入的json字符串或json对象。
  • className - 生成的类的完全限定名,包名 + 类名。

在这里插入图片描述

将实体类转为输出为JSON

ClassMethod Entity2Json(className As %String, id As %String) As %Status

其中:

  • className - 生成的类的完全限定名,包名 + 类名。
  • id - 数据唯一标识符。
USER> w ##class(Util.GenerateClassUtils).Entity2Json("M.EntityClass.Demo", 1)
{"problems":[{"Asthma":[{}],"Diabetes":[{"labs":[{"missing_field":"missing_value"}],"medications":[{"medicationsClasses":[{"className":[{"associatedDrug":[{"name":"asprin","strength":"500 mg"}]}],"className2":[{"associatedDrug":[{"name":"asprin","strength":"500 mg"}]}]}]}]}]}]}
{
	"problems": [{
		"Asthma": [{}],
		"Diabetes": [{
			"labs": [{
				"missing_field": "missing_value"
			}],
			"medications": [{
				"medicationsClasses": [{
					"className": [{
						"associatedDrug": [{
							"name": "asprin",
							"strength": "500 mg"
						}]
					}],
					"className2": [{
						"associatedDrug": [{
							"name": "asprin",
							"strength": "500 mg"
						}]
					}]
				}]
			}]
		}]
	}]
}

思考

  • 如何解析HL7生成实体类

  • 如何解析XML生成实体类

以上是个人对数据生成实体类的一些理解,由于个人能力有限,欢迎大家提出意见,共同交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/716931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPIO点灯

简述:本人使用教材为《嵌入式系统原理与应用》,GPIOCON控制输出,GPIODAT控制高电平和低电平,高电平点亮,低电平熄灭。

【若依】框架搭建,前端向后端如何发送请求,验证码的实现

若依框架 若依框架(Ruoyi)是一款基于Spring Boot和Spring Cloud的开源快速开发平台。它提供了一系列的基础功能和通用组件,能够帮助开发者快速构建企业级应用。若依框架采用了模块化的设计理念,用户可以选择需要的功能模块进行集…

全网最全,华为可信专业级认证介绍

1:华为可信专业级认证是什么? 华为在推动技术人员的可信认证,算是一项安全合规的工作。专业级有哪些考试呢?共有四门: 科目一:上级编程,对比力扣2道中等、1道困难; 科目二&#xff…

C++ STL --哈希表

目录 1. unordered系列关联式容器 1.1 unordered_map 1.1.1 unordered_map的文档介绍 1.1.2 unordered_map的接口说明 1.2 unordered_set 1.3 在线OJ 2. 底层结构 2.1 哈希概念 2.2 哈希冲突 2.3 哈希函数 2.4 哈希冲突解决 2.4.1 闭散列 2.4.2 开散列 3. 模拟实现…

中学生用什么样护眼台灯好?适合暑假学习的护眼台灯推荐

终于到了暑假,本来是有大把的“娱乐”时间,可现在看来此“娱乐”和正常出门玩耍的娱乐不太一样。不管是大学生还是中小学生,不少孩子不再出门玩耍,而是宅在家空调WiFi西瓜,抱着手机往那一趴。加上平时还需要抽出时间完…

DatenLord前沿技术分享 No.29

达坦科技专注于打造新一代开源跨云存储平台DatenLord,通过软硬件深度融合的方式打通云云壁垒,致力于解决多云架构、多数据中心场景下异构存储、数据统一管理需求等问题,以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。BSV的…

自动化测试selenium篇(二)

需要掌握selenium 常用API的使用 一、元素定位 1.1css选择器语法 1.1.1 类选择器(class选择器) 语法 : .class属性值{} 作用 : 选中对应class属性值的元素 1.1.2 id选择器 语法 : #id属性值{} 作用 : 选中对应id属性值的元素 1.1.3 标签选择器 标签选择器会选择页面上…

https技术鉴赏

视频网址:https://www.bilibili.com/video/BV1uY4y1D7Ng 总结起来:先使用非对称加密,再使用对称加密,这样就避免了明文传输。 非对称加密的作用是协商对称加密的公钥 SSL流程图大概如下: 这只是一个最简单的SSL版本,…

Small Outline Package(小外形封装)和Quad Flat Package(四边引线扁平封装)

1.Small Outline Package(小外形封装) SOP封装图片 SOP技术是飞利浦公司开发成功,以后逐渐派生出SOJ、TSOP、VSOP、SSOP、TSSOP、SOT、SOIC等封装形式。SOP是表面贴装型封装的一种,引脚从封装两侧引出,呈海鸥状形。其…

JS知识点汇总(十一)--事件模型

1. JavaScript中的事件模型有哪些 1、事件与事件流 javascript中的事件,可以理解就是在HTML文档或者浏览器中发生的一种交互操作,使得网页具备互动性, 常见的有加载事件、鼠标事件、自定义事件等 由于DOM是一个树结构,如果在父…

《面向分布式云的直播及点播云技术创新方案》获中国信通院“分布式云技术创新先锋案例”

由中国信息通信研究院、中国通信标准化协会主办的第三届“云边协同大会”于 6 月 30 日在京举办。阿里云视频云团队凭借 《面向分布式云的直播及点播云技术创新方案》 在一众产品服务中脱颖而出,荣获「分布式云技术创新先锋案例」。 面向分布式云技术的直播及点播云…

驱动控制STM32LED灯的两秒,亮灭

控制LED灯的亮灭 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014 #define PHY_LED3_MODER 0X50006000 #define PHY_LED3_ODR 0X50006…

机器学习17:训练神经网络-反向传播算法

反向传播算法对于快速训练大型神经网络至关重要。本文将介绍算法的工作原理。 目录 1.简单的神经网络 2.激活函数 3.错误函数 4.正向传播 4.1 更新隐藏层 5.反向传播 5.1 求导数 5.2 其他导数 5.3 反向传播误差倒数 6.参考文献 1.简单的神经网络 如图 1 所示&#…

中电金信发布源启·数字构建平台

6月28日,中电金信发布源启数字构建平台。源启数字构建平台是企业级研发全生命周期支持管理平台、工程平台、工具链平台。 面向金融等重点行业超大规模、超复杂度的数字化应用,源启数字构建平台通过灵活、强大的平台赋能,端到端支持应用研发全…

Acunetix v23.6 (Linux, Windows) - 漏洞扫描 (Web 应用程序安全测试)

Acunetix v23.6 (Linux, Windows) - 漏洞扫描 (Web 应用程序安全测试) Acunetix | Web Application Security Scanner 请访问原文链接:https://sysin.org/blog/acunetix-23/,查看最新版。原创作品,转载请保留出处。 作者主页:s…

笔记:flutter中一些流行的 UI 相关库

笔记:flutter中一些流行的 UI 相关库 CSDN:https://jclee95.blog.csdn.net本文收录了很多在 flutter pub 上显示流行度较高的第三方UI库和UI框架,对它们的效果进行了截图,目的是方便开发时进行查找;这些模块多数来自于…

Redis详细

Redis简介 Redis的数据类型 Redis中的常用指令 通用指令 字符串操作指令 set num 1 get num setex num1 10 1 get num1 incr num incrby num 3 decr num decrby num 3哈希操作命令 列表(List)操作命令 rpoplpush source dest 将source中的末尾元素移除…

如何编写一条高质量测试用例

测试场景: 为登录功能设计测试用例 测试员为什么要会编测试用例 测试员的目标是要保证系统在各种场景下的功能是符合设计要求的。而测试用例就是测试员想到的测试场景。(这也是高级别的测试员即使不会代码也能找到较好工作的原因) 编写测试…

视频编码压缩基础

视频编码压缩基础 文章目录 视频编码压缩基础视频图像的质量评价帧率、分辨率和码率三者之间的关系 环路滤波研究背景 视频图像的质量评价 采用有损压缩的技术能显著降低码率,但是也会降低视频图像的质量,因此对于有损压缩算法,需要建立一套…

【FFmpeg实战】Flutter音视频裁剪

作者:JianLee 链接:https://www.jianshu.com/p/868c8536a9b2 flutter_ffmpeg是什么? ffmpeg是一个音视频处理库,通过命令行的形式,对音视频进行处理,而MobileFFmpeg 则是ffmpeg在移动端的实现,…