字符串到JSON序列化器的长度是否限制为255个字符?

2020-08-30 19:47发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我正在构建将s4ha...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我正在构建将s4hana与外部Web服务集成在一起的应用程序,例如。 ariba的成功因素。 因此,我们的s4hana abap正在使用基于python的rest api。 在将主体参数传递给rest api调用时,我正在将字符串结构序列化为json格式,这将被我们的rest api接受。 例如,

body_in_string:

" Attribute1":" Value1",

" Attribute2":" Value2",

" Attribute3":[{" Sub-attri1":" Name1"},[{" Sub-attri2":" Name2"},[{" Sub-attri3":" Name3"},[{" Sub -attri4":" Name4"},[{" Sub-attri5":" Name5"},[{" Sub-attri6":" Name6"},[{" Sub-attri7":" Name7"},[{ " Sub-attri8":" Name8"},[{" Sub-attri9":" Name9"},[{" Sub-attri10":" Name10"}],

" Attribute4":" Value4",

" Attribute5":" Value5",

" Attribute6":" Value6",

" Attribute7":" Value7"

我正在使用

/ui2/cl_json =>序列化(data = body_in_string compress = abap_false pretty_name =/ui2/cl_json => pretty_mode-camel_case)。

将上述字符串序列化为json格式

{" Attribute1":" Value1",

" Attribute2":" Value2",

" Attribute3":[{" Sub-attri1":" Name1"},[{" Sub-attri2":" Name2"},[{" Sub-attri3":" Name3"},[{" Sub -attri4":" Name4"},[{" Sub-attri5":" Name5"},[{" Sub-attri6":" Name6"},[{" Sub-attri7":" Name7"},[{ " Sub-attri8":" Name8"},[{" Sub-attri9":" Name9"},[{" Sub-attri10":" Name10"}],

" Attribute4":" Value4",

" Attribute5":" Value5",

" Attribute6":" Value6",

" Attribute7":" Value7"}

/ui2/cl_json序列化程序仅将字符串序列化为json,最多255个字符,其余部分被截断。 我也尝试过-

数据lo_json_writer类型参考cl_sxml_string_writer。
lo_json_writer = cl_sxml_string_writer => create(type = if_sxml => co_xt_json)。
呼叫转换ID
源正文= body_in_string
结果XML lo_json_writer。 >

也尝试过

数据lr_json_serializer类型参考cl_trex_json_serializer。
创建对象lr_json_serializer
导出
data = body_in_string。
lr_json_serializer-> serialize()。
lv_body = lr_json_ser。/p>

所有选项都将body_in_string上面的255个字符后的字符串值截断为json序列化。

请帮助!。

8条回答
wang628962
2020-08-30 20:35

因此您得到了286个字符的字符串-问题是什么?

 [{" attribute1":" 127.0.0.1"," attribute2  ":" ROSSIS"," attribute3":[{" field":" DUMMY"," attribute":" NAME"},{" field":" DUMMY"," attribute":" NAME2"},{" field  ":" DUMMY"," attribute":" NAME3"}]," attribute4":" DUMMY"," attribute5":" 2019-10-10T15:41:02Z"," attribute6":" 420EEE10A8A00041EE9BAEE6CBF223D5CC9"}] <  br> 

PS:以下是完整的可复制示例:

 DATA lv_body TYPE字符串。
 数据sap_v_len类型i。
 类型:
 ty_field的开始,
 字段TYPE字符串,
 属性TYPE字符串,
 END OF ty_field,
 带有空键的ty_fields ty_fields类型标准表,
        开始ty_request,
 attribute1 TYPE字符串,
 attribute2 TYPE字符串,
 attribute3 TYPE ty_fields,
 attribute4 TYPE字符串,
 attribute5 TYPE字符串,
 attribute6 TYPE字符串,
 ty_request结束。
 数据:ls_fields类型ty_field,
 lt_fields类型ty_fields,
       sap_s_dc_ec_req TYPE ty_request,
 sap_t_dc_ec_req ty_request的类型标准表。

 ls_fields-field ='DUMMY'。
 ls_fields-attribute ='NAME'。
 追加ls_fields到lt_fields。

 ls_fields-field ='DUMMY'。
 ls_fields-attribute ='NAME2'。
 追加ls_fields到lt_fields。

 ls_fields-field ='DUMMY'。
 ls_fields-attribute ='NAME3'。
 追加ls_fields到lt_fields。

 * &&&-为REST API调用准备请求参数-
 sap_s_dc_ec_req-attribute1 ='127.0.0.1'。
 sap_s_dc_ec_req-attribute2 = sy-uname。
 sap_s_dc_ec_req-attribute6 ='420EEE10A8A00041EE9BAEE6CBF223D5CC9'。
 sap_s_dc_ec_req-attribute4 ='DUMMY'。
 sap_s_dc_ec_req-attribute3 [] = lt_fields []。

 * &&& ---获得世界标准时间
 sap_s_dc_ec_req-attribute5 ='2019-10-10T15:41:02Z'。
 * &&& ---移至表格
 追加sap_s_dc_ec_req到sap_t_dc_ec_req。
 * &&& ---创建并返回json主体请求以进行剩余调用---

 lv_body =/ui2/cl_json =>序列化(data = sap_t_dc_ec_req compress = abap_false pretty_name =/ui2/cl_json => pretty_mode-camel_case)。

 BREAK-要点。

一周热门 更多>