ABAP: JSON 报文解析——/ui2/cl_json

news2024/12/28 17:37:43

1、JSON数组

报文格式如下,是JSON 数组类型的。

[
    {
        "I_TYPE":"V",
        "I_BUSINESSSCOPE":"1001"
    },
    {
        "I_TYPE":"V",
        "I_BUSINESSSCOPE":"1002"
    }
]

json转换为SAP内表:

TYPES: BEGIN OF ty_in1,
           I_TYPE(1),
           I_BUSINESSSCOPE(10),
       END OF ty_in1.

DATA:   gt_in1 TYPE TABLE OF ty_in1,
        gs_in1 TYPE ty_in1.

CALL METHOD /ui2/cl_json=>deserialize
        EXPORTING
           json = i_json                             "i_json是输入的json字符串
         CHANGING
            data = gt_in1[].

解析结果:

2、JSON对象+JSON数组

报文格式如下,是有头和行项目的JSON报文

{
    "IHEADER":{
        "I_BKTXT":"测试1",
        "I_USNAM":"J007"
    },
    "ITEM":[
        {
            "I_TYPE":"V",
            "I_BUSINESSSCOPE":"1021"
        }
    ]
}

sap结构定义如下,需注意头IHEADER和ITEM报文中需和定义的保持一致,

DATA:BEGIN OF ty_header,
           I_BKTXT(30),
           I_USNAM(10),
         END OF ty_header,
         BEGIN OF ty_item,
           i_type(1),
           i_businessscope(10),
         END OF ty_item,
         BEGIN OF ty_in2,
           iheader LIKE ty_header,
           itable  LIKE TABLE OF ty_item,
         END OF ty_in2.

  DATA: is_header LIKE ty_header,
        it_item   LIKE TABLE OF ty_item.

*JSON->内表
  CALL METHOD /ui2/cl_json=>deserialize
    EXPORTING
      json = i_json                             "jsonstr是json字符串
    CHANGING
      data = ty_in2.

*另一种方式,同上
  /ui2/cl_json=>deserialize(
  EXPORTING json = i_json
  CHANGING data = ty_in2 ).

  is_header = ty_in2-iheader.
  it_item = ty_in2-item.

解析结果:

注意:/ui2/cl_json通常都可以解析,需要特别留意的是CHANGING参数的结构的定义,如果定义不一致,可能解析不出来。

参考文档:

SAP之JSON转换 - 知乎

ABAP: 定义结构_abap types 包含表结构_阿达hi的博客-CSDN博客

ABAP 接口开发之HTTP传输JSON的封装和解析_HeathlX的博客-CSDN博客

JSON和SAP内表转化_/ui2/cl_json=>deserialize-CSDN博客

JSON格式报文介绍参考:

JSON入门看这一篇就够了 - 知乎

json的几种标准格式_json格式-CSDN博客

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

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

相关文章

二 使用GPIO的复用功能 利用USART 实现printf()

参考这篇: STM32串口通信详解 1. 关于USART USART ( universal synchronous / asynchronous receiver /transmitter) 是一种串行通讯协议 , 允许设备通过串行端口进行数据传输, USART 能够以同步或者异步的方式进行工作,在实际的运用中&…

机器学习的复习笔记4-岭回归与多项式回归

一、岭回归 在简单的线性回归中,一味追求平方误差最小化,R2值尽可能大,可能会受到噪声的严重干扰。噪声,即偶发的错误的值。 如图,若为满足所有点的拟合(虚线),表面上看R2值小&…

虚拟偶像的商业化

虚拟偶像的商业化主要通过以下几种方式实现: 直播与内容:虚拟主播在各大平台进行直播,提供音乐、游戏、教育等内容。收益主要包括Super Chat(直播打赏)、收费会员(支付月费后成为该频道会员,可…

如何使用WMS仓储管理系统实现流程优化

随着企业对于物流管理的需求日益增长,自动化WMS仓储管理系统已经成为了现代企业的核心工具之一。通过引入信息化技术,我们可以实现仓库管理流程的不断调整和优化,从而更好地满足客户的多样化需求。 一、信息化技术的引领 在现代仓库管理中&a…

Docker和Kubernetes:区别与优势对比

在现代软件开发和部署中,Docker和Kubernetes是两个备受关注的技术。本文将对Docker和Kubernetes进行比较,探讨它们的区别和各自的优势。 引言 在过去的几年中,容器技术得到了迅速的发展,并且在现代软件交付和部署中扮演着越来越重…

如何获取抖音订单列表

怎么获取订单列表接口 请求地址:响应参数以及示例

为什么我用 AI 做不出好看的图?好说给你划重点

最近一个月,我们介绍了些实用的 AI 绘画教程,不知道看过的你是学会了吗?有不少朋友和小编说,有了这些教程,用好说 AI 的指令做起图来比 SD 方便了不少。 不过也有朋友就和小编抱怨:“你教程里的和我做出来…

Flask 实现Token认证机制

在Flask框架中,实现Token认证机制并不是一件复杂的事情。除了使用官方提供的flask_httpauth模块或者第三方模块flask-jwt,我们还可以考虑自己实现一个简易版的Token认证工具。自定义Token认证机制的本质是生成一个令牌(Token)&…

dubbo框架技术文档-《spring-boot整合dubbo框架搭建+配置文件》框架的本地基础搭建

阿丹: 目前流行的微服务更多的就是dubbo和springcould微服务。之前阿丹没有出过dubbo相关的文章,因为之前接触springcould的微服务概念比较多一点,但是相对于springcould来说,springcould服务之间的调用是大多是使用了nacos&#…

Cascader 级联选择器动态加载数据的回显

如果后端没有只返回第三级的id,而是同时把第三级的名字一起返回了,那么就可以通过下面的方法来实现 1.在级联选择器里面加上这句代码 placeholder"请选择" 2.注册一个字符串 pleasett:"" 3.赋值 如过后端返回的有第三级的选项名 直接进行赋…

记录一个mqtt错误

在vue-admin-template 中引入mqtt 安装不报错,引入试过 import mqtt from mqtt import * as mqtt from mqtt/dist/mqtt.min; import {connect} from mqtt 一直报错: 就表示不理解,网上也没查到相应的资料,请告诉我我不是第一个遇…

pytest系列——pytest_runtest_makereport钩子函数获取测试用例执行结果

前言 pytest测试框架提供的很多钩子函数方便我们对测试框架进行二次开发,可以根据自己的需求进行改造。 例如:钩子方法:pytest_runtest_makereport ,可以更清晰的了解测试用例的执行过程,并获取到每个测试用例的执行…

Python基础:字符串(String)详解

1. 字符串定义 在Python中,字符串是一种数据类型,用于表示文本数据。字符串是由字符组成的序列,可以包含字母、数字、符号和空格等字符。在Python中,你可以使用单引号()或双引号("&#xf…

【Python】巧用tkinter设计秒表计时器

秒表计时器是一种用于计算时间间隔的计时器。它通常由一个开始按钮、一个停止按钮和一个重置按钮组成。 使用方法: 单击“开始”按钮开始计时。单击“停止”按钮停止计时。单击“重置”按钮将计时器归零。 注意事项: 没有对计时器误差进行校准&#…

【密码学】【多方安全计算】不经意传输(Oblivious Transfer,OT)

文章目录 不经意传输(oblivious transfer)定义不经意传输的实例(1 out 2,二选一不经意传输)基于RSA的1 out 2 不经意传输疑问 不经意传输(oblivious transfer)定义 不经意传输(obli…

Spring之@Autowired 属性多实现和单实现源码解析

Autowired使用过程中遇到疑问,通过源码解析原因 一、起因1、当person只有一个实现类时,TestController中,Person属性随意取名。2、当有Person两个实现类时,TestController中,属性名称必须和实现类名一致(ma…

HarmonyOS 位置服务开发指南

位置服务开发概述 移动终端设备已经深入人们日常生活的方方面面,如查看所在城市的天气、新闻轶事、出行打车、旅行导航、运动记录。这些习以为常的活动,都离不开定位用户终端设备的位置。 当用户处于这些丰富的使用场景中时,系统的位置能力…

跨境电商崛起:揭秘全球化商机

随着科技的迅猛发展,跨境电商正崭露头角,成为商业新风口。这个数字化时代为全球商家带来了前所未有的机遇,同时也为消费者提供更广阔的购物选择。本文将深入探讨跨境电商的崛起,揭示其中隐藏的全球化商机,以及这一趋势…

【c++】多线程大幅缩减时间

多线程在进行复杂运算时能够大量节约时间 提醒自己能够在多线程运算的时候一定要充分利用 能够省下2/3的时间 测试代码 #include<vector> #include <iostream> #include <thread> using namespace cv; using namespace std; int result1 0 ; bool thread…

希亦和海尔内衣洗衣机哪款好用点?性价比小型洗衣机测评

在最近的这两年以来&#xff0c;专门用于清洗我们内衣裤等贴身衣物的小家电——内衣洗衣机&#xff0c;非常的火爆&#xff01;如今越来越多的人开始使用上了内衣洗衣机&#xff0c;不仅省时而且还省力。但是由于市面上内衣洗衣机产品众多&#xff0c;于是我挑选了希亦和海尔两…