使用/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 ).
关键修改说明
- 新增
ty_output结构,仅包含需要输出的customer_id和customer字段,确保序列化后生成对应JSON对象。 - 将原代码中字符串拼接的逻辑替换为结构赋值,让JSON序列化工具将结构转换为键值对形式的JSON对象。
内容的提问来源于stack exchange,提问作者Srinivas chandu
相关产品推荐
相关产品推荐

