假设我有这个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.

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



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

如何使用ABAP代码反序列化JSON字符串成ABAP结构的更多相关文章

  1. Newtonsoft.Json.dll反序列化JSON字符串的方法

      1.直接反序列化JSON字符串 //引用序列化.反序列化JSON字符串用到的空间 using Newtonsoft.Json; using Newtonsoft.Json.Linq; //定义一个 ...

  2. Newtonsoft.Json.dll 反序列化JSON字符串

    上一篇JSON博客<JSON入门级学习小结--JSON数据结构>中已对JSON做了简单介绍,JSON字符串数组数据样式大概是这样子的: 如今因为项目需求(asp.net web网站,前台向 ...

  3. Newtonsoft.Json.4.5.11使用方法总结---反序列化json字符串

    写在开头: 最近项目需求,需要在C#中处理json字符串,毫不犹豫的下载了Newtonsoft.Json 4.5.11(2012.12.17)http://json.codeplex.com/,然后百 ...

  4. .NET中如何使用反序列化JSON字符串/序列化泛型对象toJsonStr

    在进行 .NET Web MVC 框架开发的网站程序的时候,我们都会遇到最关键的问题,数据传输.   .NET MVC 4中的ControllerBase类建议我们用ViewBag动态数据字典形式(t ...

  5. webpages框架使用@razor语法向js代码传递Json字符串

    进入web开发时间太短,一个人尝试着做了几个初级项目,遇到了太多的困难.尽管不是学开发专业的,仅为爱好所以硬着头皮坚持了下来. 将遇到的问题记录下来,备查. 使用vs2015中asp.net razo ...

  6. c# .net 读取json 字符串 与序列化和反序列化json字符串

    命名空间 using Newtonsoft.Json.Linq; JObject obj = JObject.Parse("json字符串");用 obj["" ...

  7. C#反序列化json字符串时,提示:应为来自命名空间“”的元素“root”。。遇到名称为“”、命名空间为“”的“None”。

    反序列化调用接口返回的字符串时,出现:应为来自命名空间“”的元素“root”..遇到名称为“”.命名空间为“”的“None”.,导致反序列化数据失败,这种失败并有时候并不会直接提示反序列化失败(抛异常 ...

  8. JS代码把JSON字符串转换为对象,计算对象的长度并把它转换为数字类型,把转换的值相加减

    Number(JSON.parse(rowObject.RenewalProperty).length)-1

  9. dom4j 解析字符串成树形结构

    引入maven依赖: <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artif ...

随机推荐

  1. Java中利用JFrame创建窗体

    1. 一个简单例子: public class Test(){ public static void main(String[] args){ JFrame frame = new JFrame(); ...

  2. APPcrawler基础原理解析及使用

    一.背景 一年前,我们一直在用monkey进行Android 的稳定性测试 ,主要目的就是为了测试app 是否会产生Crash,是否会有ANR,页面错误等问题,在monkey测试过程中,实现了脱离Ca ...

  3. python3 迭代器笔记

    #迭代器import syslist=[1,2,3,4]it=iter(list)while True: try: print(next(it)) except StopIteration: sys. ...

  4. 傻瓜式Spring教学第二课

    什么是依赖注入 先说什么是依赖 如下: class A{ B b; } class B{ } 则称A依赖B. 依赖:A的某些业务逻辑需要B的参与,如果不对A中的参数b进行实例化,那么A中的某些业务逻辑 ...

  5. ajax请求状态码为0的解决办法

    原文链接:https://blog.csdn.net/changqing5818/article/details/53932463 前言 今天遇到个奇怪的问题,使用JQuery的ajax请求,后台的C ...

  6. 使用nrm解决npm下载包慢的问题!

    nrm的安装使用 作用:提供了一些最常用的NPM包镜像地址,能够让我们快速的切换安装包时候的服务器地址: 什么是镜像:原来包刚一开始是只存在于国外的NPM服务器,但是由于网络原因,经常访问不到,这时候 ...

  7. appium手机自动化环境搭建

    在robotframework环境安装完成的基础上进行如下安装,如果没有安装rfs环境,请先参考robotframework安装文章:Robot Framework的环境搭建 文件下载地址:链接:ht ...

  8. Oracle基础篇--03DML语言

    1.数据准备: --创建表格的 create table dept as select * from scott.dept; create table emp as select * from sco ...

  9. 统计学howto

    统计之都 http://cos.name/ 让你拥有超能力:程序员应该掌握的统计学公式 Statistical Formulas For Programmers http://www.evanmill ...

  10. The Falling Leaves UVA - 699

    题目链接:https://vjudge.net/problem/UVA-699 题目大意:给一颗二叉树,每个结点都有一个水平位置 :左子节点在它左边的1个单位,右子结点在它右边1个单位.从左向右输出每 ...