/ui2/cl_json 序列化的性能
Performance of /ui2/cl_json serialization
过去我通过 SAP RFC 将其用于 return 任何数据结构:
json = /ui2/cl_json=>serialize( data = <lt_result>
pretty_name = /ui2/cl_json=>pretty_mode-low_case ).
如果 <lt_result>
很小,这很有效,但对于较大的数据集,这很慢。
如何通过通用 ABAP RFC 功能模块 return 任何数据结构?我使用 PyRFC,但据我所知,这对于这个问题应该无关紧要。
这可能表现更好:
DATA(lo_json_writer) = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ).
CALL TRANSFORMATION id
SOURCE result = <lt_result>
RESULT XML lo_json_writer.
ev_json_data = lo_json_writer->get_output( ). " yours export parameter
如果性能对您来说最重要,那么 /ui2/cl_json 是错误的选择。虽然它是一个 ABAP 代码和 SAP_BASIS 700 兼容语法。
CALL TRANSFORMATION id 在性能方面更好。这也写在my blog。顺便说一句:我是 /ui2/cl_json.
的作者
但如果涉及灵活性、舒适性、支持的数据类型和所需格式,那么目前没有比 /ui2/cl_json 更好的解决方案。
可能,可以使用 CALL TRANSFORMATION 和自己的 XSLT 转换获得一些更好的、专门的实现,但它已经比 id one 慢,并且会花费更多的编码工作。
仍有可能使 /ui2/cl_json 更快,方法是放弃对较低版本(7.40 以下)的支持并使用 SXML 解析器中的构建来处理 JSON,但这需要一些工作去做。我没有时间/实际要求。
@Sandra Rossi:我很乐意为 /ui2/cl_json 应用任何性能建议,所以如果您有具体示例,请将它们发送给我。在这里或在博客中。但请考虑到目前,我需要遵守 SAP_BASIS 7.00 限制。
过去我通过 SAP RFC 将其用于 return 任何数据结构:
json = /ui2/cl_json=>serialize( data = <lt_result>
pretty_name = /ui2/cl_json=>pretty_mode-low_case ).
如果 <lt_result>
很小,这很有效,但对于较大的数据集,这很慢。
如何通过通用 ABAP RFC 功能模块 return 任何数据结构?我使用 PyRFC,但据我所知,这对于这个问题应该无关紧要。
这可能表现更好:
DATA(lo_json_writer) = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ).
CALL TRANSFORMATION id
SOURCE result = <lt_result>
RESULT XML lo_json_writer.
ev_json_data = lo_json_writer->get_output( ). " yours export parameter
如果性能对您来说最重要,那么 /ui2/cl_json 是错误的选择。虽然它是一个 ABAP 代码和 SAP_BASIS 700 兼容语法。 CALL TRANSFORMATION id 在性能方面更好。这也写在my blog。顺便说一句:我是 /ui2/cl_json.
的作者但如果涉及灵活性、舒适性、支持的数据类型和所需格式,那么目前没有比 /ui2/cl_json 更好的解决方案。
可能,可以使用 CALL TRANSFORMATION 和自己的 XSLT 转换获得一些更好的、专门的实现,但它已经比 id one 慢,并且会花费更多的编码工作。
仍有可能使 /ui2/cl_json 更快,方法是放弃对较低版本(7.40 以下)的支持并使用 SXML 解析器中的构建来处理 JSON,但这需要一些工作去做。我没有时间/实际要求。
@Sandra Rossi:我很乐意为 /ui2/cl_json 应用任何性能建议,所以如果您有具体示例,请将它们发送给我。在这里或在博客中。但请考虑到目前,我需要遵守 SAP_BASIS 7.00 限制。