【问题标题】:Mule dataweave extract elements from json arrayMule dataweave 从 json 数组中提取元素
【发布时间】:2017-08-03 14:01:03
【问题描述】:

我有以下 json,我正在尝试提取手机数组的某些元素。我并不总是得到 2 个元素,它可能是 1、2 或 3。

{
"phones": [{
        "id": 123,
        "phoneType": "H",
        "phoneNumber": "2125551212",
        "countryCode": "1",
        "isCellPhone": false,
        "optInTexting": false
    }, {
        "id": 456,
        "phoneType": "W",
        "phoneNumber": "9197776262",
        "countryCode": "1",
        "isCellPhone": true,
        "optInTexting": true
    }
]

}

这是我的输出:

%output application/java
---
{
   HOMEPH:  payload.phones filter ($.phoneType == "H") map {HOMEPH:.phoneNumber},
   WORKPH:  payload.phones filter ($.phoneType == "W") map {WORKPH:$.phoneNumber}
}

我从中得到的结果:

HOMEPH: [{HOMEPH=2125551212}]
WORKPH: [{WORKPH=9197776262}]

我想要什么:

HOMEPH: "2125551212",
WORKPH: "9197776262"

【问题讨论】:

    标签: mule dataweave


    【解决方案1】:

    尝试以下方法

    %output application/java
    ---
    {
       HOMEPH:  (payload.phones filter ($.phoneType == "H") map ($.phoneNumber)) [0],
       WORKPH:  (payload.phones filter ($.phoneType == "W") map ($.phoneNumber)) [0]
    }
    

    或者

    %output application/java
    %var phoneLookup = {(payload.phones map { 
        ($.phoneType) : $
    })}
    ---
    {
       HOMEPH:  phoneLookup["H"].phoneNumber,
       WORKPH:  phoneLookup["W"].phoneNumber
    }
    

    第二个选项更有效,因为它会迭代您的有效负载一次。 希望这会有所帮助。

    【讨论】:

    • 是的,这就是我想要的。由于我过滤到数组中的一个元素并且我想要那个单个元素 [0],因此它会提取我需要的内容。非常感谢。
    【解决方案2】:

    由于您使用输出为 application/java ,您可以尝试以下操作:

    %dw 1.0
    %output application/java
    ---
    {
        (payload.phones filter ($.phoneType == "H") map {HOMEPH:$.phoneNumber}),
        (payload.phones filter ($.phoneType == "W") map {WORKPH:$.phoneNumber})
    }
    

    您将获得如下输出:

    如果在 Dataweave 之后添加 Object 到字符串转换器,你会得到:

    {HOMEPH=2125551212, WORKPH=9197776262}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2021-03-26
      相关资源
      最近更新 更多