反序列化API JSON响应时,字段名称会被截断为30个字符,

2020-09-04 03:37发布

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

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


嗨,

当我在API JSON响应上使用类/ui2/cl_json =>反序列化时,字符超过30个的字段将被截断。

例如-

CONFIDENCELOWERLEVELTHRESHOLDV 被截断为 CONFIDENCELOWERLEVELTHRESHOLDV

有什么办法可以解决这个问题?

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

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


嗨,

当我在API JSON响应上使用类/ui2/cl_json =>反序列化时,字符超过30个的字段将被截断。

例如-

CONFIDENCELOWERLEVELTHRESHOLDV 被截断为 CONFIDENCELOWERLEVELTHRESHOLDV

有什么办法可以解决这个问题?

付费偷看设置
发送
4条回答
SAP小黑
1楼-- · 2020-09-04 04:07

如果您担心字段名称的长度,则没有解决方案-30个字符是固定限制。

SAP表和字段名称存储在表DD03L的字段FIELDNAME中。 如果深入数据元素FIELDNAME到基础域FDNAME,您会发现它定义为CHAR 30。

野沐沐
2楼-- · 2020-09-04 04:01

我提供的答案与该字段的值有关,是 与字段长度本身有关的问题?

樱桃小丸子0093
3楼-- · 2020-09-04 04:23

输出长度取决于传递给输出的结构类型。 像下面的示例一样,我有一个嵌套的数据,因此我创建了自己的结构并传递该结构以获取输出:

类型:
         开始进入

           access_token TYPE字符串,

           token_type TYPE字符串,

           expires_in TYPE n LENGTH 8,

           作用域TYPE字符串,

           jti TYPE字符串,

         t_entry的结尾。

       类型:

         t_entry_map t_entry的类型排序表,具有唯一键access_token。

       数据:m_entries类型t_entry。


/ui2/cl_json =>反序列化(

         导出json = gv_token pretty_name =/ui2/cl_json => pretty_mode-camel_case更改数据= m_entries)。

         lv_auth2 = m_entries-access_token。  "在这里,我得到的数据长度将近100个字符。
My梦
4楼-- · 2020-09-04 04:25

我认为这与字段名称的长度有关。

正如Loyd所述,这里有一个限制

因此,如果您在JSON中获得的属性长度超过30个字符,则无法选择名称超过30个字符的字段。

- 使用name_mappings输入表并在其中定义从JSON长名称到ABAP名称的映射,该映射当然应少于30个字符。

-扩展类并覆盖方法PRETTY_NAME或PRETTY_NAME_EX并在其中写入必要的逻辑

有关详细信息,请参见博客页面:

https://wiki.scn.sap.com/wiki/display/Snippets/One+more+ABAP+ to + JSON + Serializer +和+ Deserializer

一周热门 更多>