You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用/UI2/CL_JSON转换JSON:将拼接字符串转为目标JSON结构

JSON转换需求及解决方案

问题描述

当前执行ABAP代码后得到的JSON输出为:

"0000010006  GLAESS"

但实际需要的目标输出格式是:

{"customer_id":"0000010006","customer":"GLAESS"}

问题根源

原代码中将customer_id与customer拼接成单个字符串变量后直接序列化,导致输出为JSON字符串值,而非预期的JSON对象结构。

修改后的代码

TYPES: BEGIN OF ty_field,
         customer_id  TYPE string,
         address      TYPE string,
         created_time TYPE string,
         customer     TYPE string,
         date_created TYPE string,
       END OF ty_field,
       BEGIN OF ty_record,
         id          TYPE string,
         createdtime TYPE string,
         fields      TYPE ty_field,
       END OF ty_record,
       BEGIN OF ty_response,
         records TYPE STANDARD TABLE OF ty_record WITH EMPTY KEY,
       END OF ty_response,
       " 新增用于输出的目标结构,仅保留需要的字段
       BEGIN OF ty_output,
         customer_id TYPE string,
         customer    TYPE string,
       END OF ty_output.

DATA:ls_response TYPE ty_response.

START-OF-SELECTION.
  DATA(resp) = `{"records":[{"id":"rec5Qk24OQpKDyykq","createdTime":"2022-08-03T10:14:43.000Z","fields":{"customer_id":"0000010001","address":"Chennai","time_created":"06:00:14","customer":"IDADMIN","date_created":"16.04.2004"}},{"id":"rec7bSe8Zb18z6b5a","createdTime":"2022-08-08T13:07:16.000Z","fields":{"customer_id":"0000010007","address":"Kakinada","time_created":"04:01:18","customer":"Ramya","date_created":"15.04.2000"}},{"id":"recD9Hh4YLgNXOhUE","createdTime":"2022-08-08T11:48:06.000Z","fields":{"customer_id":"0000010002","address":"Bangalore","time_created":"04:03:35","customer":"MAASSBERG","date_created":"20.04.2004"}},{"id":"recK7Tfw4PFAedDiB","createdTime":"2022-08-03T10:14:43.000Z","fields":{"customer_id":"0000010005","address":"Kakinada","time_created":"12:55","customer":"Lakshmi","date_created":"13-10-2022"}},{"id":"recKOq0DhEtAma7BV","createdTime":"2022-08-03T10:14:43.000Z","fields":{"customer_id":"0000010006","address":"Hyderabad","time_created":"18:42:28","customer":"GLAESS","date_created":"21.04.2004"}},{"id":"recS8pg10dFBGj8o7","createdTime":"2022-08-03T10:14:43.000Z","fields":{"customer_id":"0000010003","address":"Gurugram","time_created":"04:10:02","customer":"MAASSBERG","date_created":"20.04.2004"}},{"id":"recf4QbOmKMrBeLQZ","createdTime":"2022-08-03T10:14:43.000Z","fields":{"customer_id":"0000010004","address":"Bangalore","time_created":"06:00:12","customer":"IDADMIN","date_created":"21.04.2004"}},{"id":"recs7oHEqfkN87tWm","createdTime":"2022-08-03T10:14:43.000Z","fields":{"customer_id":"0000010000","address":"Hyderabad","time_created":"04:01:18","customer":"MAASSBERG","date_created":"15.04.2004"}}]}`.

  /ui2/cl_json=>deserialize(
      EXPORTING
          json = resp
          pretty_name = /ui2/cl_json=>pretty_mode-user
      CHANGING
          data = ls_response ).

  DATA(ls_first_entry) = ls_response-records[ 5 ].

  " 给输出结构赋值,替代原字符串拼接逻辑
  DATA(ls_output) = VALUE ty_output(
    customer_id = ls_first_entry-fields-customer_id
    customer = ls_first_entry-fields-customer
  ).

  DATA(output) = /ui2/cl_json=>serialize(
                  data = ls_output
                  compress = abap_true
                  pretty_name = /ui2/cl_json=>pretty_mode-camel_case ).

关键修改说明

  1. 新增ty_output结构,仅包含需要输出的customer_id和customer字段,确保序列化后生成对应JSON对象。
  2. 将原代码中字符串拼接的逻辑替换为结构赋值,让JSON序列化工具将结构转换为键值对形式的JSON对象。

内容的提问来源于stack exchange,提问作者Srinivas chandu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:20:59