写作JSON序列(Writing JSON serializer)

2019-09-28 09:56发布

如果我要开发针对哪一个犯规已经存在(例如,ABAP)语言,有什么可以参与它的努力串行? 是否涉及仅仅写“文本相当于” ABAP serialzer的 - 我将如何应对复杂的对象。 什么是最好的起点呢?

Answer 1:

更新:与发布7.02和7.03 / 7.31(内核补丁116)开始,JSON在ABAP原生支持-检查这个博客霍斯特·凯勒。

第一sap.com然后选择现有项目学习的榜样和贡献的一个:你应该寻找ABAP和JSON使用的网站。 不过,如果你还是出于对NIH奖励积分,请确保您知道如何使用泛型类型,字段符号,RTTI和递归内而外,再练习走路复杂的数据结构使用递归RTTI。 一旦你这样做,装配任何输出字符串的很容易。



Answer 2:

目前所做的正是这一个类:CL_TREX_JSON_SERIALIZER。 它不是唯一的东西(和SAP告诉我通过客户信息,他们将不会解决这个问题,他们不支持该代码)就是把属性在双引号。

这是很容易固定在CL_TREX_JSON_SERIALIZER-RECURSE添加上线52:

CONCATENATE '"' <abapcomp>-name '"' c_colon INTO l_value .

一个示例程序是:

"We are going to serialize an error
DATA: wa_error TYPE bapireturn.
"Reference to the serializer
DATA: cl_serializer TYPE REF TO zcl_trex_json_serializer.
"Final output
DATA: l_json_string TYPE string.

wa_error-type = 'E'.
wa_error-code = 'BC'  .
wa_error-message = 'This will serialize correctly.'.

CREATE OBJECT cl_serializer
  EXPORTING
    DATA = wa_error.

cl_serializer->serialize( ) .
l_json_string = cl_serializer->get_data( ) .
WRITE l_json_string.

我用zcl_trex_json_serializer这与beforementioned修复cl_trex_json_serializer的克隆。 此代码将返回:

{ “类型”: “E”, “代码”: “BC”, “消息”: “这将正确序列。”, “log_no”: “”, “log_msg_no”: “000000”, “message_v1”: “” “message_v2”: “”, “message_v3”: “”, “message_v4”: “”}

我已经使用在包含表诸如此类结构的代码; 代码似乎能够处理这一切。



Answer 3:

除了vwegert的回应退房SAP到JSON转换



文章来源: Writing JSON serializer