【发布时间】:2021-07-01 06:05:08
【问题描述】:
我正在尝试根据复杂 JSON 文件中的值获取元素的值。
如果 currency ='BRL' 和 索引会发生变化,则尝试获取 value 属性(即 100),所以我只想尝试基于条件。
到目前为止,我只是在下面尝试过:
脚本:
function test()
{
var result = jsonpath.query(payload,"$..client_balance[?(@.type == 'AVAILABLE')]");
console.log(result);
}
test();
输出:
[
{
amount: { currency: 'BRL', value: '100', skip: false },
type: 'AVAILABLE'
},
{
amount: { currency: 'USD', value: '10', skip: false },
type: 'AVAILABLE'
}
]
现在,如果 currency code = 'BRL',我只想获取 value 属性(即 100)。我尝试应用 [?(@.currency == 'BRL')] 在路径变量的尾部,但它返回空数组。
谁能帮我解决这个问题。
更新:
尝试了过滤函数来获取特定元素的值。
console.log(Object.values(payload).filter(element =>{
element.currency === 'BRL';
}));
输出:
[]
【问题讨论】:
-
你试过用双等号
[?(@.currency == 'BRL')]吗? -
是的。我试过了,它返回空数组。
-
对不起。我认为应该是
[?(@.amount.currency == 'BRL')] -
@Andy - 我尝试使用下面的代码使用过滤器将货币代码的值获取到 BRL,但它不起作用。由于有效负载更复杂,并且它包含嵌套数组。所以想选择 jsonpath 方法。使用过滤函数结果更新问题。