当前位置: 首页 > article >正文

SAP ABAP 中驼峰字段名转 JSON 的实现方案

有人问:SAP中驼峰字段名的集成接口,转Json时,abap要如何处理呢?

在 SAP 系统开发中,当通过接口与外部系统交互时,JSON 格式因其轻量、易解析的特性被广泛使用。而外部系统常采用驼峰式(Camel Case)字段命名规范(如 customerId),但 ABAP 数据字典中的字段通常遵循大写字母加下划线的命名规则(如 CUSTOMER_ID)。如何在 ABAP 中将驼峰字段名正确转换为 JSON 格式?本文将介绍一种借助 CL_JSON 类与字段描述(Short Text)的实现方法。

一、实现原理

ABAP 的 CL_JSON 类提供了 serialize 方法用于数据到 JSON 的序列化。当设置 pretty_name = 'X' 时,该方法会使用字段的 短文本(Short Text) 作为 JSON 键名。因此,只需将数据字典中字段的短文本配置为驼峰格式,即可在序列化时生成符合要求的 JSON 字段名。

二、操作步骤

1. 配置数据字典字段描述

在 SAP 数据字典(SE11)中,打开目标结构体(或表),为每个需转换为驼峰的字段设置 短文本(Short Text)。例如:

  • ABAP 字段名:CUSTOMER_ID,短文本设置为 customerId
  • ABAP 字段名:CUSTOMER_NAME,短文本设置为 customerName

2. ABAP 代码实现

以下代码演示了如何将包含驼峰字段的内表序列化为 JSON:

REPORT z_demo_json_camel_case." 假设数据字典中已定义结构体 ZTS_CUSTOMER(字段短文本为驼峰)
TYPES: BEGIN OF zts_customer,customer_id   TYPE int4,     " ABAP 规范字段名(实际开发中对应数据字典字段)customer_name TYPE string,   " ABAP 规范字段名(实际开发中对应数据字典字段)END OF zts_customer.DATA: it_data TYPE STANDARD TABLE OF zts_customer,  " 定义内表lv_json TYPE string.                          " 存储 JSON 结果" 填充测试数据
it_data = VALUE #( ( customer_id = 1001 customer_name = '张三' ) ).TRY." 调用 CL_JSON 序列化,设置 pretty_name = 'X' 启用字段描述作为键名cl_json=>serialize(EXPORTINGdata          = it_data    " 传入内表(若为单个结构体,直接传入结构体变量)compress      = 'X'        " 压缩 JSON(可选,减少字符串长度)pretty_name   = 'X'        " 关键参数:使用字段短文本作为 JSON 键名CHANGINGjson_text     = lv_json).WRITE: / 'JSON 结果:', lv_json. " 输出示例:[{"customerId":1001,"customerName":"张三"}]CATCH cx_json INTO DATA(lo_exc).WRITE: / '错误:', lo_exc->get_text( ).
ENDTRY.

3. 代码解析

  • cl_json=>serialize:ABAP 中用于 JSON 序列化的核心方法。
    • data:传入待转换的内表或结构体。
    • compress = 'X':可选参数,压缩生成的 JSON 字符串(去除空格等)。
    • pretty_name = 'X':核心参数,使能使用字段短文本作为 JSON 键名。
  • 通过此配置,CL_JSON 会自动读取字段短文本(驼峰格式),生成符合要求的 JSON 输出。

三、注意事项

  • 字段描述准确性:确保数据字典中字段短文本与目标驼峰格式完全一致,否则 JSON 键名会出错。
  • 兼容性:此方法适用于 ABAP 7.40 及以上版本(CL_JSON 类在这些版本中功能稳定)。
  • 复杂场景处理:若需动态调整字段名(如非数据字典标准结构),可结合 DESCRIBE FIELD 动态获取字段信息,再手动处理键名,但代码复杂度会增加。

相关文章:

SAP ABAP 中驼峰字段名转 JSON 的实现方案

有人问:SAP中驼峰字段名的集成接口,转Json时,abap要如何处理呢? 在 SAP 系统开发中,当通过接口与外部系统交互时,JSON 格式因其轻量、易解析的特性被广泛使用。而外部系统常采用驼峰式(Camel C…...

对抗性机器学习:AI模型安全防护新挑战

随着采用对抗性机器学习(Adversarial Machine Learning, AML)的AI系统融入关键基础设施、医疗健康和自动驾驶技术领域,一场无声的攻防战正在上演——防御方不断强化模型,而攻击者则持续挖掘漏洞。2025年,对抗性机器学习…...

[[春秋云境] Privilege仿真场景

文章目录 靶标介绍:知识点卷影拷贝(VSS) 外网任意文件读取Jenkins管理员后台rdp远程登录Gitlab apiToken 内网搭建代理 Oracle RCESeRestorePrivilege提权mimikatzspn卷影拷贝提取SAM 参考文章 靶标介绍: 在这个靶场中,您将扮演一名资深黑客…...

Redis学习打卡-Day3-分布式ID生成策略、分布式锁

分布式 ID 当单机 MySQL 已经无法支撑系统的数据量时,就需要进行分库分表(推荐 Sharding-JDBC)。在分库之后, 数据遍布在不同服务器上的数据库,数据库的自增主键已经没办法满足生成的主键全局唯一了。这个时候就需要生…...

计算机网络:怎么理解调制解调器的数字调制技术?

数字调制技术详解 数字调制技术是将数字比特流转换为适合在物理信道(如电缆、光纤、无线信道)传输的模拟信号的核心技术。通过改变载波(通常是正弦波)的幅度、频率或相位(或组合),将二进制数据映射到模拟波形上。其目标是高效利用频谱资源、提升抗干扰能力,并适应不同…...

数据库第二次作业--SQL的单表查询与多表查询

单表查询 查询专业信息表中的专业名称和专业类型 SELECT Mname, Mtype FROM MajorP;查询一个学校有多少个专业 SELECT COUNT(Mno) AS 专业数量 FROM MajorP;查询学校的男女学生各有多少位 SELECT Ssex, COUNT(*) AS 人数 FROM StudentP GROUP BY Ssex查询每个专业…...

在Cursor中启用WebStorm/IntelliJ风格快捷键

在Cursor中启用WebStorm/IntelliJ风格快捷键 方法一:使用预置快捷键方案 打开快捷键设置 Windows/Linux: Ctrl K → Ctrl SmacOS: ⌘ K → ⌘ S 搜索预设方案 在搜索框中输入keyboard shortcuts,选择Preferences: Open Keyboard Shortcuts (JSON) …...

vue3:十三、分类管理-表格--编辑、新增、详情、刷新

一、效果 实现封装表格的新增、编辑、详情查看,表格刷新功能 实现表格组件中表单的封装 1、新增 如下图,新增页面显示空白的下拉,文本框,文本域,并实现提交功能 2、编辑 如下图,点击行数据,可将行数据展示到编辑弹窗,并实现提交功能 3、详情 如下图,点击行数据,…...

c#基础01(.Net介绍)

文章目录 .Net平台介绍.Net平台简介跨平台开源.Net Core.Net Framework开发工具安装选项 创建项目 .Net平台介绍 .Net平台简介 .NET是一种用于构建多种应用的免费开源开放平台,例如: Web 应用、Web API 和微服务 云中的无服务器函数 云原生应用 移动…...

Go语言之路————并发

Go语言之路————并发 前言协程管道SelectsyncWaitGroup锁 前言 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触Go,到后面能正常完成工作上的业务开发的过程,如…...

Logrotate:配置日志轮转、高效管理Linux日志文件

Logrotate 是 Linux 系统中用于自动化管理日志文件的工具,能够定期轮转、压缩、删除日志文件,确保系统日志不会无限制增长,占用过多磁盘空间。 它通常由 Cron 作业定期执行,也可以手动触发。 1. 🔧 核心功能 日志轮转…...

贵州某建筑物挡墙自动化监测

1. 项目简介 某建筑物位于贵州省某县城区内,靠近县城主干道,周边配套学校、医院、商贸城。建筑物临近凤凰湖、芙蓉江等水系,主打“湖景生态宜居”。改建筑物总占地面积:约5.3万平方米;总建筑面积:约15万平…...

nginx服务器实验

1.实验要求 1)在Nginx服务器上搭建LNMP服务,并且能够对外提供Discuz论坛服务。 在Web1、Web2服务器上搭建Tomcat 服务。 2)为nginx服务配置虚拟主机,新增两个域名 www.kgc.com 和 www.benet.com,使用http://www.kgc.…...

【算法】滑动窗口动态查找不含重复字符的最长子串

// 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 // // 输入: s "abcabcbb" // 输出: 3String s "abcabcbb";String[] sArr s.split("");StringBuilder noDuplicateStr new StringB…...

高速光耦在通信行业的应用(五) | 5Mbps通信光耦的特性

针对5MBd速率光耦市场,晶台推出KL2200、KL2201和KL2202系列光耦 ,对标大部分国外品牌产品的应用;它分别由一个红外发射二极管和一个高速集成光电检测器逻辑门组成。 它采用 8 引脚 DIP 封装,并提供 SMD 选项。KL2200 的检测器具有一个三态输出…...

Apidog MCP服务器,连接API规范和AI编码助手的桥梁

#作者:曹付江 文章目录 1.了解 MCP2.什么是 Apidog MCP 服务器?3.Apidog MCP 服务器如何工作4.利用人工智能改变开发工作流程5.设置 Apidog MCP 服务器: 分步指南5.高级功能和提示5.1 使用 OpenAPI 规范5.2.多个项目配置5.3.安全最佳实践5.4…...

视觉模型部署实践:低算力平台RV1106上高效部署paddlepaddle 的PicoDet目标检测模型的技术实践

在资源受限的嵌入式设备上实现高精度、低延迟的目标检测,是当前智能摄像头、边缘计算等应用中的关键挑战。本文以 Rockchip 的 RV1106 嵌入式平台为例,结合百度开源的轻量级检测模型 PicoDet,探讨如何通过模型优化与硬件加速,在有…...

07、基础入门-SpringBoot-自动配置特性

# Spring Boot自动配置特性 07、基础入门-SpringBoot-自动配置特性 Spring Boot的自动配置是其核心特性之一,旨在通过智能化的默认配置简化Spring应用的开发流程,减少手动配置的工作量。 ## 一、自动配置的核心思想 ### 1. 条件化配置 根据应用的依赖和上…...

国内MCP服务平台推荐 AIbase推出MCP服务器客户端商店

在当今数字化时代,人工智能(AI)技术正以前所未有的速度发展,不断改变着我们的生活和工作方式。2025年,AI领域迎来了一项重要的技术进展——MCP(Model Context Protocol,模型上下文协议)的广泛应用。这一技术…...

Profinet转Ethernet IP主站网关:点燃氢醌生产线的智慧之光!

案例分享:转角指示器和Profinet转EthernetIP网关的应用 在现代工业自动化中,设备和系统之间的高效通信至关重要。最近,我们在某大型化工企业的生产线上实施了一个项目,旨在通过先进的设备和通信技术提高生产效率和安全性。该项目…...

Elasticsearch 初步认识

Elasticsearch 初步认识 1 索引(index) 索引是具有相同结构的文档集合。例如,可以有一个客户信息的索引,包括一个产品目录的索引,一个订单数据的索引。在系统上索引的名字全部小写,通过这个名字可以用来执…...

爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案

爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案 这张有趣的图片生动描绘了爬虫开发者与反爬工程师之间的"军备竞赛"。作为技术博主,我将基于这张图的各个阶段,深入分析爬虫技术的演进与对应的反制措施,提供一套完整的反爬解决方案,包括技术原理、实施方法…...

可变参数(Variadic Functions)- 《Go语言实战指南》

Go 语言允许函数接受不定数量的参数,也称“可变参数”。这为构建灵活的函数提供了便利,常用于求和、拼接等操作。 一、语法格式 func 函数名(参数名 ...类型) 返回值类型 {// 函数体 } 可变参数本质上是一个切片(slice)&#xf…...

[ctfshow web入门] web75

信息收集 启用了open_basedir,所以之前的方法又不能用了 解题 cforeach(new DirectoryIterator("glob:///*") as $a){echo($a->__toString(). ); } ob_flush();cif ( $a opendir("glob:///*") ) {while ( ($file readdir($a)) ! false …...

交流学习 | 江西同为科技有限公司赴海尔总部考察交流

2025年4月8日至9日,江西同为科技有限公司在江西省科技装备商会的带领下,以蔡文君经理为代表,一行人赴山东青岛海尔总部开展两天的考察交流活动。本次考察不仅深入剖析了海尔企业的前沿技术与管理理念,更促进了行业内科技创新、商业…...

React方向:react的基本语法-数据渲染

1、安装包(js库) yarn add babel-standalone react react-dom 示例图.png 2、通过依赖包导入js库文件 <script src"../node_modules/babel-standalone/babel.js"></script> <script src"../node_modules/react/umd/react.development.js"&g…...

Java求职面试:从核心技术到大数据与AI的场景应用

面试场景&#xff1a; 在某互联网大厂的面试间&#xff0c;一位严肃的面试官正准备对面前的求职者谢飞机进行技术面试。谢飞机虽然有些紧张&#xff0c;但他相信凭借自己的机智和幽默能够顺利通过。 第一轮提问&#xff1a;核心语言与平台的基础问题 面试官&#xff1a;“谢…...

Ubuntu 20.04之Docker安装ES7.17.14和Kibana7.17.14

你需要已经安装如下运行环境: Ubuntu 20.04 docker 28 docker-compose 1.25 一、手动拉取镜像 docker pull docker.elastic.co/kibana/kibana:7.17.14docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.14 或者手动导入镜像 docker load -i es7.17.14.ta…...

RK3568-鸿蒙5.1镜像烧录与调试

参考https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/docs/%E7%83%A7%E5%BD%95%E6%8C%87%E5%AF%BC%E6%96%87%E6%A1%A3.md https://blog.csdn.net/pengjiadashaoye/article/details/144448126 固件烧录 缺了3个 , 没找着,烧录试试看 ,看了参考也不太一样 缺了…...

游戏引擎学习第294天:增加手套

准备战斗 我们正在进行的是第294天的开发&#xff0c;目前暂时没有特别确定要做的内容&#xff0c;但我们决定继续研究移动模式相关的部分。虽然一些小型实体系统已经在运行&#xff0c;但并不确定最终效果如何。 今天我们决定实现一个全新的功能&#xff1a;战斗系统。这是游…...