我试图使用Mule中的数据编织从传入的有效负载中读取特定的数据值。我的有效载荷如下所示:
{
"source": [
{
"uri": "entities/1R6xV",
"createdBy": "API_USER",
"createdTime": 1562504739146,
"attributes": {
"label": "000000000002659654",
"value": {
"Name": [
{
}
],
"Id": [
{
}
],
"Number": [
{
"type": "config/Types/Number/attributes/Number",
"ov": true,
"value": "000000000002659654",
"uri": "entities/1R6xV/attributes/Num/1ZtyT/Number/60pvN6"
}
]
}
}
}
]
}如果我需要阅读“标签”,我可以通过
label: payload.source.attributes.label类似地,我如何读取属性>数字下的“值”。它不起作用的是:
Value: payload.source.attributes.Number.value我是数据编织的新手。请给我建议。
发布于 2019-07-10 15:02:00
问题是点选择器(.)在对象和对象数组上工作。当它应用于数组时,它将将点选择器应用于数组中所有类型为object的元素,并返回结果。
让我们一分为二
payload.source返回
[
{
"uri": "entities/1R6xV",
"createdBy": "API_USER",
"createdTime": 1562504739146,
"attributes": {
"label": "000000000002659654",
"value": {
"Name": [
{
}
],
"Id": [
{
}
],
"Number": [
{
"type": "config/Types/Number/attributes/Number",
"ov": true,
"value": "000000000002659654",
"uri": "entities/1R6xV/attributes/Num/1ZtyT/Number/60pvN6"
}
]
}
}
}
]到目前为止,作为一个对象,它返回作为数组的源的值。
payload.source.attributes返回
[
{
"label": "000000000002659654",
"value": {
"Name": [
{
}
],
"Id": [
{
}
],
"Number": [
{
"type": "config/Types/Number/attributes/Number",
"ov": true,
"value": "000000000002659654",
"uri": "entities/1R6xV/attributes/Num/1ZtyT/Number/60pvN6"
}
]
}
}
]工作正常,因为payload.source的结果以对象数组结尾,所以它将对这些对象进行选择。
现在当你执行
payload.source.attributes.value.Number它回来了
[
[
{
"type": "config/Types/Number/attributes/Number",
"ov": true,
"value": "000000000002659654",
"uri": "entities/1R6xV/attributes/Num/1ZtyT/Number/60pvN6"
}
]
]这是一个数组,这里是它被破坏的地方。
我的解决方案
你这里有两种选择
发布于 2019-07-10 14:25:28
由于数字是一个数组,所以需要指定所需的索引。在本例中,zeroth元素:
Value: payload.source[0].attributes.value.Number[0].value
如果您有多个数字,它将如下所示:
%dw 1.0
%output application/json
---
values: payload.source[0].attributes.value.Number map {
value: $.value
}https://stackoverflow.com/questions/56972384
复制相似问题