赞
踩
- /ui2/cl_json=>serialize( EXPORTING data = lt_ekko "序列化数据
- compress = '' "是否跳过空元素
- numc_as_string = '' "数量转换成字符
- pretty_name = 'L' "详细用法在下方描述
- name_mappings = lt_name_mappings "详细使用在下面描述
- RECEIVING r_json = lv_string "返回JSON字符 ).
PS:如果我们需要转换驼峰命名,在SAP定义我们字段的时候要做一些处理;需要在我们想要大写的字母前加上下划线 '_' ,例如我们想将字符ZHANGYAO转换成ZhangYao时,在SAP我们需要将字段名定义为_zhang_yao。然后将pretty_name参数设置为 ' X ' 。
当SAP字段与外围系统字段命名方式相差太多,或者你任性不想使用PRETTY_NAME参数的时候,还有没有另外一种方法能够帮助我们实现字段匹配呢?答案是当然有。具体如何使用呢?
- SELECT ebeln,ebelp FROM ekpo INTO TABLE @DATA(lt_ekko) UP TO 1 ROWS .
- ls_mapping-abap = 'Ebeln'.
- ls_mapping-json = 'ZHang张123'.
- INSERT ls_mapping INTO TABLE lt_mappings.
- CLEAR:ls_mapping.
- ls_mapping-abap = 'ebelp'.
- ls_mapping-json = 'Yao耀123'.
- INSERT ls_mapping INTO TABLE lt_mappings.
SELECT ebeln,ebelp FROM ekpo INTO TABLE @DATA(lt_ekko) UP TO 1 ROWS . ls_mapping-abap = 'Ebeln'. ls_mapping-json = 'ZHang张123'. INSERT ls_mapping INTO TABLE lt_mappings. CLEAR:ls_mapping. ls_mapping-abap = 'ebelp'. ls_mapping-json = 'Yao耀123'. INSERT ls_mapping INTO TABLE lt_mappings.
以上就是序列化比较常用的四种参数,其他的暂时没有了解过。
- /ui2/cl_json=>deserialize( EXPORTING json = gv_odata
- pretty_name = 'X'
- name_mappings = lt_mappings
- CHANGING data = gs_odata ).
反序列化的时候,其实不需要太多操作,因为SAP是不区分大小写的,所以只要根据JSON字段命名创建好我们的SAP接收结构即可。反序列化的NAME_MAPPING使用可以参照上面的使用。将SAP字段和外围系统字段反过来即可。
但是有一个点,需要注意一下,JSON传过来的数据是对象嵌套数组的时候,我们SAP定义接收结构需要有点小小的不同,下面举一个比较简单的例子。
如果我们接收到的JSON参数是这种对象里面包含数组时,我们定义接收结构时也要对照参照。
我这里举得例子比较简单,真实需求里可能存在多层嵌套。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。