假设我有这个JSON字符串如下图所示:


我的任务是解析出上图黑色方框里的几个字段,比如ObjectID, ETag, BuyerID, DateTime, ID, Name等等,把它们的值存储到对应ABAP变量里。

下面是ABAP解析方案。

首先定义一个ABAP结构,包含需要解析的几个字段。

TYPES:BEGINOFty_header,objectidTYPEstring,buyeridTYPEstring,datetimeTYPEstring,idTYPEstring,nameTYPEstring,ENDOFty_header.

然后定义一个ABAP结构,字段名为results,对应本文截图里加了红色下划线的json字符串中的results字段,类型为刚刚定义的ty_header:

TYPES:BEGINOFty_result,resultsTYPEty_header,ENDOFty_result.

同样,再定义一个ABAP结构ty_d:

TYPES: BEGIN OF ty_d,
d TYPE ty_result,
END OF ty_d.

总之,ABAP里定义的结构,其字段名和层次结构必须和JSON字符串一致。

定义一个ABAP变量用于存储反序列化结果,类型为步骤一的ty_d:

DATA:ls_dataTYPEty_d.WRITE:/lv_response.CALLMETHOD/ui2/cl_json=>deserializeEXPORTINGjson=lv_responseCHANGINGdata=ls_data.

执行上述代码,发现反序列化成功:



要获取更多Jerry的原创文章,请关注公众号"汪子熙":