ABAP的复杂JSON结构

2020-08-18 17:52发布

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

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


嗨,

我正在努力将JSON结构转换为ABAP数据。

JSON看起来像

 {
   " _id":"字符串",
   "错误":"字符串",
   " request":" string",

   "预测":[
     {
       " name":" string",
       "结果":[{
           " label":" string",
           "得分":0
         }
       ]
     }
   ],
   " status":" QUEUED",
   " tenantName":"字符串",
   " error_description":"字串"
 } 

,我尝试创建嵌套的ABAP结构,例如

 types:classificationResults_s的开头,
  标签类型字符串,
  分数类型字符串,
  分类结果的末尾。


 类型:具有非唯一默认键的categoryResults_s的结果类型标准表。


 类型:prediction_s的开头,
  名称类型字符串,
  结果类型结果,
  预测结束。

 类型:带有非唯一默认键的prediction_s的预测类型表。


 类型:响应开始,
               _id TYPE字符串,
             错误TYPE字符串,
            请求类型字符串,
        预测类型预测,
             状态类型字符串,
           tenantName类型的字符串,
   error_description类型字符串,
     回应结束。
 数据:wa_response类型的响应。


 调用方法/UI2/CL_JSON => DESERIALIZE
  出口
   JSON =回应
  改变
   DATA = wa_response 

但这永远不会给我任何结果。

当我尝试只包含一个内部表的结构时,一切正常。 但是,在引入第二层(在这种情况下为结果)时,反序列化将返回一个空的数据结构。

我们将提供任何帮助。

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

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


嗨,

我正在努力将JSON结构转换为ABAP数据。

JSON看起来像

 {
   " _id":"字符串",
   "错误":"字符串",
   " request":" string",

   "预测":[
     {
       " name":" string",
       "结果":[{
           " label":" string",
           "得分":0
         }
       ]
     }
   ],
   " status":" QUEUED",
   " tenantName":"字符串",
   " error_description":"字串"
 } 

,我尝试创建嵌套的ABAP结构,例如

 types:classificationResults_s的开头,
  标签类型字符串,
  分数类型字符串,
  分类结果的末尾。


 类型:具有非唯一默认键的categoryResults_s的结果类型标准表。


 类型:prediction_s的开头,
  名称类型字符串,
  结果类型结果,
  预测结束。

 类型:带有非唯一默认键的prediction_s的预测类型表。


 类型:响应开始,
               _id TYPE字符串,
             错误TYPE字符串,
            请求类型字符串,
        预测类型预测,
             状态类型字符串,
           tenantName类型的字符串,
   error_description类型字符串,
     回应结束。
 数据:wa_response类型的响应。


 调用方法/UI2/CL_JSON => DESERIALIZE
  出口
   JSON =回应
  改变
   DATA = wa_response 

但这永远不会给我任何结果。

当我尝试只包含一个内部表的结构时,一切正常。 但是,在引入第二层(在这种情况下为结果)时,反序列化将返回一个空的数据结构。

我们将提供任何帮助。

付费偷看设置
发送
6条回答
SAP小菜
1楼-- · 2020-08-18 18:38
打个大熊猫
2楼-- · 2020-08-18 18:37

我使用了转换(如 在上面的链接中建议)将JSON转换为ABAP。 有一些关于它的博客,以及一些带有有用答案的问题。

黑丝骑士
3楼-- · 2020-08-18 18:38

嗨,马库斯,

在我看来,您的问题只是驼峰式的:来自JSON的tenantName 在ABAP结构中应为tenant_name,然后在调用反序列化时

/ui2/cl_json =>反序列化(导出json = request_data
                                        pretty_name =/ui2/cl_json => pretty_mode-camel_case
                             

在结构中使用字符串数据类型时,JSON中的分数:0也应为JSON分数:" 0"。

木偶小白
4楼-- · 2020-08-18 18:48

您好,

在删除换行符和所有空格后可以使用。

但是,我希望使用空格,因为文本字段中的空格也被删除了(Model T-> ModelT)

用``。替换正则表达式'[]'的所有出现。
 替换所有出现的cl_abap_char_utilities => newline并以''代替。

任何想法是什么导致了这种现象,还有什么我可以做以保持空白?

软件心理学工程师
5楼-- · 2020-08-18 18:32

嗨,马库斯 ,

您能够解决此问题。我也面临类似的问题

致谢

Pratik

空代码
6楼-- · 2020-08-18 18:29

我使用json_to_data做到了:

数据:lo_json类型参考cl_clb_parse_json。

创建对象lo_json。

调用方法lo_json-> json_to_data(

导出

iv_json = p_string

改变

c_data = wa_response)。

其中p_string(TYPE STRINGVAL)是json。 wa_response与您所做的相同。

一周热门 更多>