【问题标题】:Deserialize JSON to table将 JSON 反序列化为表
【发布时间】:2019-08-01 13:44:05
【问题描述】:

我需要根据通过 API 接收的数据填充 ABAP 中的表。

我正在使用以下 ABAP 函数从 json 填充现有 ABAP 表。

JSON 正确,Table 包含表中对应的表。

/ui2/cl_json=>deserialize( EXPORTING json = lv_json
                             CHANGING data = lt_abap  ).

运行它会返回一个空白的 lt_abap 表。

将输出更改为结构时,这可以正常工作。但问题是需要一个表,而不是后续调用的结构

/ui2/cl_json=>deserialize( EXPORTING json = lv_json
                             CHANGING data = ls_abap

任何人都可以提出一个解决方案来将他的 JSON 放入我的 TABLE 中吗?

JSON:

{
    "Id": "1369130",
    "Venueid": "0005",
    "Userid": "1320625",
    "Menuid": "null",
    "Created": "2019-07-29T08:18:35.000+0000",
    "items": [
      {
        "Id": "4255354",
        "Total": "3.10",
        "Price": "2.80",
        "Qty": "1",
        "Orderid": "1369130",
        "Menuitemid": "1447268",
        "Externalid": "",
        "Name": "Breakfast Roll Deal",
        "modifiers": [
          {
            "Price": "0.00",
            "Qty": "1",
            "Id": "0000001",
            "Orderitemid": "4255354",
            "Externalid": "1000716",
            "Name": "Bacon and Sausage Corn Topped Roll"
          },
          {
            "Price": "0.30",
            "Qty": "1",
            "Id": "00000002",
            "Orderitemid": "4255354",
            "Externalid": "E1001587",
            "Name": "Extra Sausage"
          },
          {
            "Price": "0.00",
            "Qty": "1",
            "Id": "00000003",
            "Orderitemid": "4255354",
            "Externalid": "1000774",
            "Name": "Latte"
          },
          {
            "Price": "0.00",
            "Qty": "1",
            "Id": "00000004",
            "Orderitemid": "4255354",
            "Externalid": "E",
            "Name": "Spread"
          }
        ]
      }
]
  }

表结构完全匹配。

【问题讨论】:

  • 请添加Minimal, Reproducible Example:缺少最小的JSON和内部表的类型(最终,最小意味着您使用非常简单的JSON和对应的非常简单的表类型创建了一个最小程序)。
  • 您发布的不是表格。它是一个结构。可以映射到表的 JSON 应以 [ 开头并以 ] 结尾。
  • @Jagger 您可以将您的评论转换为答案以便我投票吗?谢谢。
  • @SandraRossi 这样做了。 SAP 在LOOP AT SCREEN 上的任何更新? :)
  • @Jagger 谢谢。自 6 月 28 日起没有关于 LOOP AT SCREEN 的 SAP 消息,仍在“进行中”;不要急,它在我的 SAP 支持收件箱中,我会在收到消息后立即发布好消息或坏消息。

标签: json deserialization abap


【解决方案1】:

您发布的不是表格。它是一个结构。可以映射到表的 JSON 应该以 [ 开头并以 ] 结尾。

这是一个例子。

REPORT ZZZ.

DATA:
  g_tab_t000 TYPE STANDARD TABLE OF t000 WITH EMPTY KEY.

START-OF-SELECTION.
  /ui2/cl_json=>deserialize( EXPORTING json = '[ { "MANDT": "000" }, 
    { "MANDT": "001" }, { "MANDT": "002" } ]' CHANGING data = g_tab_t000 ).
  BREAK-POINT.

【讨论】:

    【解决方案2】:

    解决方案再简单不过了……

    我简单地反序列化到我的结构中,然后附加到我的表中。

    /ui2/cl_json=>deserialize( EXPORTING json = lv_json
                                 CHANGING data = lS_abap  ).
    
    
    APPEND LS_abap TO lt_abap.
    

    【讨论】:

    • 其实你问的完全是别的东西,但也许我理解错了。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2012-03-07
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多