JSON TO ABAP对话

2020-08-18 03:12发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,我正在使用类:调用方法cl_fdt_json => json_to_data
     出口
       iv_json = in_string
     改变
       ca_data = abap结构。
 用于将json转换为abap。
 json结构:
 {
   " recurringPaymentInfo":{
     " id":" a889898989",
     " referanceNumber":" 76556",
     " activityIndi​​cator":" NEW",
     " channel":"代理",
     " cancelRecurring":" false",
     " stopPay":" false",
     " authorizationType":"",
     " agentEmail":"",
     " maxAmount":"",
     "客户":{
       " phoneNumber":" 5345",
       "电子邮件":" test.test@test.com",
       "地址": {
         " line1":"俄克拉荷马街87号",
         " city":" woodlandHills",
         " country":" usa",
         " zipCode":" 91367"
       },
       "付款方法": {
         " requestReasonType":" EFT/PC/CC",
         " accountHolderName":" abc",
         " BankRoutingNumber":" 3434",
         " bankName":"追逐",
         " cardNumber":"签证/主/美国运通",
         " cardStartDate":" 11414124",
         " cardToDate":" 24242412",
         "区域":" CA"
       }
     }
   }
 }

 我不想要根对象:recurringpaymentinfo,而需要从{ID:开始的转换的传入json。 在那种情况下,我可以成功地将json转换为abap结构,
 你能告诉我我应该怎么做才能摆脱根元素。
 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,我正在使用类:调用方法cl_fdt_json => json_to_data
     出口
       iv_json = in_string
     改变
       ca_data = abap结构。
 用于将json转换为abap。
 json结构:
 {
   " recurringPaymentInfo":{
     " id":" a889898989",
     " referanceNumber":" 76556",
     " activityIndi​​cator":" NEW",
     " channel":"代理",
     " cancelRecurring":" false",
     " stopPay":" false",
     " authorizationType":"",
     " agentEmail":"",
     " maxAmount":"",
     "客户":{
       " phoneNumber":" 5345",
       "电子邮件":" test.test@test.com",
       "地址": {
         " line1":"俄克拉荷马街87号",
         " city":" woodlandHills",
         " country":" usa",
         " zipCode":" 91367"
       },
       "付款方法": {
         " requestReasonType":" EFT/PC/CC",
         " accountHolderName":" abc",
         " BankRoutingNumber":" 3434",
         " bankName":"追逐",
         " cardNumber":"签证/主/美国运通",
         " cardStartDate":" 11414124",
         " cardToDate":" 24242412",
         "区域":" CA"
       }
     }
   }
 }

 我不想要根对象:recurringpaymentinfo,而需要从{ID:开始的转换的传入json。 在那种情况下,我可以成功地将json转换为abap结构,
 你能告诉我我应该怎么做才能摆脱根元素。
 
付费偷看设置
发送
3条回答
zhangjiyang1323
1楼 · 2020-08-18 03:36.采纳回答

将当前的abap结构包含到新的"虚拟"结构中可能是最简单的。 将JSON转换为新结构后,您可以根据需要将其复制/移动到当前结构中。

否则,您可能需要将json转换为xml,使用过滤器,克隆等。 xml,将xml转换回json,以便最终使用将Json转换为ABAP函数。

如果您发布当前abap结构的屏幕截图,或以编码形式显示该结构,则可能有助于提供进一步的建议。

这是您可以对其进行测试的方法:

类型:BEGIN OF定期付款信息,
          id TYPE字符串,
          Referancenumber TYPE字符串,
          活动指示符TYPE字符串,
          频道TYPE字符串,
          cancelrecurring TYPE字符串,
          Stoppay TYPE字符串,
          授权类型TYPE字符串,
          agentemail TYPE字符串,
          maxamount TYPE字符串,
          客户的开始
            电话号码TYPE字符串,
            电子邮件TYPE字符串,
            开始地址,
              line1 TYPE字符串,
              城市TYPE字符串,
              国家TYPE字符串,
              邮政编码TYPE字符串,
            地址的结尾,
            开始付款方式,
              requestreasontype TYPE字符串,
              accountholdername TYPE字符串,
              bankroutingnumber TYPE字符串,
              银行名称TYPE字符串,
              卡号TYPE字符串,
              cardstartdate TYPE字符串,
              cardtodate TYPE字符串,
              区域TYPE字符串,
            付款方式结束,
          END OF客户,
        END OF定期付款信息,
        开始于my_dummy_struc,
          recurringpaymentinfo TYPE recurringpaymentinfo,
        my_dummy_struc的结尾。

 数据my_dummy_struc类型my_dummy_struc。
 数据abap_structure TYPE定期付款信息。
 DATA json_string TYPE字符串。

 json_string =`{`&&
  `" recurringPaymentInfo":{`&&
  `" id":" a889898989",`&&
  `" referanceNumber":" 76556",`&&
  `" activityIndi​​cator":" NEW",`&&
  `" channel":" agent",`&&
  `" cancelRecurring":" false",`&&
  `" stopPay":" false",`&&
  `" authorizationType":"",&&
  `" agentEmail":"",&&
  `" maxAmount":"",&&
  `"客户":{`&&
  `" phoneNumber":" 5345",`&&
  `" email":" test.test@test.com",`&&
  `" address":{`&&
  `" line1":"俄克拉荷马街87号",&&
  `" city":"林地山丘",&&&
  `"国家":"美国",`&&
  `" zipCode":" 91367"`&&
  `},&&
  `" paymentMethod":{`&&
  `" requestReasonType":" EFT/PC/CC",&&
  `" accountHolderName":" abc",`&&
  `" BankRoutingNumber":" 3434",`&&
  `" bankName":"追逐",&&
  `" cardNumber":"签证/主/美国运通",&&&
  `" cardStartDate":" 11414124",`&&
  `" cardToDate":" 24242412",`&&
  `" region":" CA"`&&
  `} &&
  `} &&
  `} &&
 }。

 呼叫方法cl_fdt_json => json_to_data
   出口
     iv_json = json_string
   改变
     ca_data = my_dummy_struc。

 将my_dummy_struc-recurringpaymentinfo对应移动到abap_structure。
 

代楠1984
2楼-- · 2020-08-18 03:39

请任意一个?

xfwsx85
3楼-- · 2020-08-18 03:31

marshnil sonavane ,&&是用于连接字符串表达式的字符串运算符。

一周热门 更多>