首页 文章

JSON到ABAP:需要什么样的数据结构?

提问于
浏览
1

我想将一个json字符串解析成一个abap内部表 .

一个示例json字符串看起来像这样

{“apiVersion”:“1.0”,“data”:{“location”:“德累斯顿”,“温度”:“7”,“skytext”:“小雨”,“湿度”:“96”,“风” “:”7.31 km / h“,”date“:”02-14-2017“,”day“:”Tuesday“}}

我想用这个方法

cl_fdt_json=>json_to_data

并将值和键放入这样的表中

types: begin of map,
             key type string,
             value type string,
             end of map.
    data json_data type standard table of map.

但不幸的是,它并不像这样 . 有没有人有这种问题的经验?因为我无法访问所有文档,因为这是我在SAP招聘的样本任务,这是“谜题”的最后一部分;),我很难找到解决方案 .

谢谢!!!

编辑:因此对vwegerts回答我尝试了以下(这与我原本想做的有点不同,但也可以)

DATA cl_oops TYPE REF TO cx_dynamic_check.
  DATA(text) = result.
  TYPES: BEGIN OF ty_structure,
           skytext TYPE string,
           location type string,
           temperature type string,
           humidity type string,
           wind type string,
           date type string,
           day type string,
         END OF ty_structure.
  DATA : wa_structure TYPE ty_structure.
  TRY.
      CALL TRANSFORMATION id
           SOURCE XML text
           RESULT data = wa_structure.
      message  wa_structure-skytext type 'I'.
    CATCH cx_transformation_error INTO cl_oops.
      WRITE cl_oops->get_longtext( ).
  ENDTRY.

但它仍然无法正常工作 . 当我检查wa_structure-skytext的值时,它是不幸的空 . 我找不到错误 . 有没有人有想法?

3 回答

  • 1

    您可能希望查看w ell-documented capabilities of the ABAP runtime system itself,而不是使用FDT类(可能并非在所有系统上都可用) . This example program可能是你的选择 . 您基本上提供了一个简单转换,它将JSON XML结构映射到您的数据结构,实例化一个sXML JSON读取器,然后将其作为源传递给 CALL TRANSFORMATION .

  • 1

    除了@vwegert建议使用SAP记录的json转换,你可以检查open source alternatives . This one看起来很有希望 .

  • 0

    {“apiVersion”:“1.0”,“data”:{“location”:“德累斯顿”,“温度”:“7”,“skytext”:“小雨”,“湿度”:“96”,“风” “:”7.31 km / h“,”date“:”02-14-2017“,”day“:”Tuesday“}}

    ABAP中的相应结构将是:

    "The nested data table 
    Types: Begin of ty_data,
            location TYPE string,
            temperature TYPE string,
            skytext TYPE string,
            etc.
          End of ty_data,
          ty_t_data TYPE STANDARD TABLE OF ty_data WITH NON-UNIQUE DEFAULT KEY INITIAL SIZE 0.
    "the whole json structure
    Types: Begin of ty_json,
            apiversion TYPE string,
            data TYPE ty_t_data,
           End of ty_json.
    DATA: ls_data TYPE ty_json.
    

    现在,您必须找到一个适当的JSON反序列化器,它可以处理嵌套表 . 大多数反序列化器都需要表输入,因此您必须在JSON字符串的末尾添加“['...']'并定义lt_data TYPE STANDARD TABLE OF ty_json .

相关问题