【问题标题】:Tabular Data to Nested JSON表格数据到嵌套 JSON
【发布时间】:2019-08-22 11:01:22
【问题描述】:

我正在尝试使用 MuleSoft 将表格查询输出转换为嵌套 JSON。我的查询输出如下:

----------------------------------
Customer |  Order   |   Items
----------------------------------
C       |   Order1  |   Itm1
C       |   Order1  |   Itm2
C       |   Order2  |   Itm1
C       |   Order2  |   Itm4
C       |   Order3  |   Itm3
C       |   Order3  |   Itm4

并使用 Mule4 dataweave 我正在尝试将其转换为流动的 JSON 输出:

Customer: C
Orders: {
            Order1:{
                Items: {                  
                  Item: Item1
                  Item: Item2
                }
            }
            Order2:{
                Items: {                  
                  Item: Item1
                  Item: Item4
                }
            }

            Order3:         

}

到目前为止,我尝试过如下代码,但没有成功:

%dw 2.0
output application/json
---

    payload map ((st, stindex) -> {
        Customer:   st.Customer,

        Orders: payload filter(($.Customer == st.Customer) and  ($.Order == st.Order)) map ((f, fIndex) ->{

            Order: f.Order      

            Items : payload filter (($.ItemName == f.ItemName) and ($.Order == f.Order)) map ((i, iIndex) -> {

                item: i.ItemName
            })

        })

    })

似乎我错过了一些重要的事情。感谢你的帮助!!

【问题讨论】:

    标签: mule-studio anypoint-studio dataweave mulesoft


    【解决方案1】:

    我需要一个多级 groupBy()、mapObjects 和一个 reduce() 用于项目。

    %dw 2.0
    output application/json
    ---
    (payload map {
        Customer: $.Customer,
        Order: $.Order,
        Items: $.Items
    } groupBy (item) -> item.Customer) 
        mapObject ((value, key, index) -> { 
            Customer : key, 
            Orders: (value groupBy (orders)->orders.Order) 
                mapObject ((value1, key1,  index1) -> {
                        "$(key1)": value1 reduce ((item, accumulator={}) -> accumulator ++ {Item: item.Items} )
                }     
                )
            }
          )
    

    输出:

    {
      "Customer": "C",
      "Orders": {
        "Order2": {
          "Item": "Itm1",
          "Item": "Itm4"
        },
        "Order1": {
          "Item": "Itm1",
          "Item": "Itm2"
        },
        "Order3": {
          "Item": "Itm3",
          "Item": "Itm4"
        }
      }
    }
    

    脚本的缩进很糟糕,但我修复它为时已晚。

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多