如何使用ABAP代码反序列化JSON字符串成ABAP结构

举报
汪子熙 发表于 2021/12/25 21:01:20 2021/12/25
【摘要】 假设我有这个JSON字符串如下图所示:我的任务是解析出上图黑色方框里的几个字段,比如ObjectID, ETag, BuyerID, DateTime, ID, Name等等,把它们的值存储到对应ABAP变量里。下面是ABAP解析方案。首先定义一个ABAP结构,包含需要解析的几个字段。TYPES: BEGIN OF ty_header,objectid TYPE string,buyerid...

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

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

下面是ABAP解析方案。

  1. 首先定义一个ABAP结构,包含需要解析的几个字段。
TYPES: BEGIN OF ty_header,
objectid TYPE string,
buyerid  TYPE string,
datetime TYPE string,
id       TYPE string,
name     TYPE string,
END OF ty_header.

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

TYPES: BEGIN OF ty_result,
results TYPE ty_header,
END OF ty_result.

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

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

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

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

WRITE:/ lv_response.

CALL METHOD /ui2/cl_json=>deserialize
EXPORTING
json = lv_response
CHANGING
data = ls_data.

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

前提条件是您得先有一个新浪微博帐号。

打开网页http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5

点击新手引导->开发者页面:

会自动跳转到页面:http://open.weibo.com/development,
点击按钮”创建应用“:

选择创建的应用类型:

维护该新浪微博应用的相关信息:

创建成功后,得到应用的url:http://open.weibo.com/apps/3609793985

可以得到应用的application key:

以及application secret:

为了消费新浪微博API,需要获得Access token。

下面是具体步骤。

  1. 将url https://api.weibo.com/oauth2/default.html 设置成“授权回调页”字段:

  2. 浏览器里输入如下url:
    https://api.weibo.com/oauth2/authorize?client_id=<replace with your application key>&response_type=code&redirect_uri=https://api.weibo.com/oauth2/default.html
    可以看到这个页面:

点”授权”:

浏览器地址栏里的code=后面的内容就是access token。

登录新浪微博AP控制台,验证该access token是否有效:
http://open.weibo.com/tools/console?uri=users/show&httpmethod=GET&key1=uid&value1=1904178193

随便选择一个接口,输入access token,点击“调用接口”,能看到返回的数据,说明该access token有效。

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。