无法使用 jsonpath 节点 js 库获取特定元素值
Unable to fetch the specific element value using jsonpath node js library
我正在尝试根据元素在复杂 JSON 文件中的值获取元素的值。
如果 currency ='BRL' 和 index 会发生变化,则尝试获取值属性(即 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'
}
]
现在,如果 货币代码 = 'BRL',我只想获取值属性(即 100)。我尝试应用 [?(@.currency == 'BRL')]
在路径变量的尾部,但它返回空数组。
谁能帮我解决这个问题。
更新:
尝试了过滤函数来获取特定的元素值。
console.log(Object.values(payload).filter(element =>{
element.currency === 'BRL';
}));
输出:
[]
console.log(Object.values(payload).filter(element =>{
return element.amount.currency === 'BRL';
}));
我认为这应该可行
这是一个有点复杂的查询,但它应该能为您提供所需的信息。
从您所拥有的开始,return您发布的结果集:
$..client_balance[?(@.type == 'AVAILABLE')]
向此添加另一个过滤器,该过滤器在 currency
字段的 amount
字段内部进行比较:
$..client_balance[?(@.type == 'AVAILABLE')][?(@.amount.currency === 'BRL')]
这应该只给出一个元素:
[
{
amount: { currency: 'BRL', value: '100', skip: false },
type: 'AVAILABLE'
}
]
从这里你想获得 value
字段,但要到达那里,你需要它的路径,这意味着你必须通过 amount
和 currency
字段首先.
$..client_balance[?(@.type == 'AVAILABLE')][?(@.amount.currency === 'BRL')].amount.currency.value
这应该return
[
100
]
请注意我们是working on a specification for JSON Path. If this library chooses to adhere to it once published, the ===
will need to change to a ==
as this is what we've decided to support。
我正在尝试根据元素在复杂 JSON 文件中的值获取元素的值。
如果 currency ='BRL' 和 index 会发生变化,则尝试获取值属性(即 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'
}
]
现在,如果 货币代码 = 'BRL',我只想获取值属性(即 100)。我尝试应用 [?(@.currency == 'BRL')] 在路径变量的尾部,但它返回空数组。
谁能帮我解决这个问题。
更新:
尝试了过滤函数来获取特定的元素值。
console.log(Object.values(payload).filter(element =>{
element.currency === 'BRL';
}));
输出:
[]
console.log(Object.values(payload).filter(element =>{
return element.amount.currency === 'BRL';
}));
我认为这应该可行
这是一个有点复杂的查询,但它应该能为您提供所需的信息。
从您所拥有的开始,return您发布的结果集:
$..client_balance[?(@.type == 'AVAILABLE')]
向此添加另一个过滤器,该过滤器在 currency
字段的 amount
字段内部进行比较:
$..client_balance[?(@.type == 'AVAILABLE')][?(@.amount.currency === 'BRL')]
这应该只给出一个元素:
[
{
amount: { currency: 'BRL', value: '100', skip: false },
type: 'AVAILABLE'
}
]
从这里你想获得 value
字段,但要到达那里,你需要它的路径,这意味着你必须通过 amount
和 currency
字段首先.
$..client_balance[?(@.type == 'AVAILABLE')][?(@.amount.currency === 'BRL')].amount.currency.value
这应该return
[
100
]
请注意我们是working on a specification for JSON Path. If this library chooses to adhere to it once published, the ===
will need to change to a ==
as this is what we've decided to support。