Mule- 使用数据编织从 Json 对象中提取密钥

Mule- Extracting key from Json object using dataweave

我需要从 json 输入对象中提取键和值以形成不同的 json 输出。

我浏览了文档和其他与此类似的问题,在那里我发现 $$ 给出了密钥,但在我的例子中,它给出了索引而不是密钥名称。

输入 json 如下所示:{ "key2": "val2", "key3": "val3", "key4": "val4", "key5": "val5", "key6": "val6" }

我写的dataweave代码是:

{
"someOtherKey": "val",
properties: {
    entry: payload map

     {  
        key:$$,
        value:$
     }


}

}

转换后我得到:

{
 "someOtherKey": "val",
"properties": {
    "entry": [
        {
            "key": 0,
            "value": "val2"
        },
        {
            "key": 1,
            "value": "val3"
        },
        {
            "key": 2,
            "value": "val4"
        },
        {
            "key": 3,
            "value": "val5"
        },
        {
            "key": 4,
            "value": "val6"
        }
    ]
}

}

这里我期望输出键名作为 Key

的值

预期输出:

{
"someOtherKey": "val",
"properties": {
    "entry": [{
            "key": "key2",
            "value": "val2"
        },
        {
            "key": "key3",
            "value": "val3"
        },
        {
            "key": "key4",
            "value": "val4"
        },
        {
            "key": "key5",
            "value": "val5"
        },
        {
            "key": "key6",
            "value": "val6"
        }

    ]
}

}

使用mapObject代替map

%dw 1.0
%output application/json
---
{
    key: "val",
    key1: "val1",
    properties: {
        entry: payload mapObject {  
            key:$$,
            value:$
         }
    }
}

希望对您有所帮助。

标签 pluck 对我有用。这是示例:

{
"someOtherKey": "val",
properties: {
    entry: payload pluck

     {  
        key:$$,
        value:$
     }


}

}