arrays - 使用 JMESPath 对 JSON 数组的值求和
问题描述
我正在尝试使用的sum
功能,JMESPath
但遇到了一些麻烦。我设法弄清楚如何在多个条件下使用搜索功能。这个说法:
var x = search(myData, "Account[].Details[? Year=='2018' && Title=='ABC'].Amount");
返回此 JSON 数组:
["2404.00", "2404.00", "2402.67", "2699.00", "2699.00", "2698.49"]
现在我想做的是对这些值求和。JMESPath规范说对内置sum
函数使用这种语法:
number sum(array[number] $collection)
我不明白如何使用这个功能。有人可以帮忙吗?
解决方案
我拿了你的最后一个例子并添加了更多的示例数据,我们将总结价格
const testData =
{
"ServiceAccount": [
{
"Type": "WIDGET",
"ID": [
{
"OrderNum": "12345",
"OrderTyp": "ABDCD",
"Price": "10",
}
]
},
{
"Type": "WIDGET",
"ID": [
{
"OrderNum": "22345",
"OrderTyp": "ZBDCD",
"Price": "20",
}
]
},
{
"Type": "WIDGET",
"ID": [
{
"OrderNum": "22385",
"OrderTyp": "ZBDXD",
"Price": "30",
}
]
}
]
};
const result = jmespath.search(testData, 'sum(ServiceAccount[].ID[].Price.to_number(@))');
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jmespath/0.15.0/jmespath.min.js"></script>
您当前的问题的答案是这样的:
var x = search(myData, "sum(Account[].Details[? Year=='2018' && Title=='ABC'].Amount.to_number(@))");
推荐阅读
- python - Flask,SQLAlchemy:如何使用 wtforms.ext.sqlalchemy.fields.QuerySelectField 进行下拉
- visual-studio-code - 在 EJS 文件上使用 VS Code JSHint
- java - Mac 上的 Eclipse 使用错误的 JDK
- ios - 如何在 Swift 中复制/复制自定义 collectionview 单元格?
- plsql - 使用触发器在另一个表上完成的 DML 语句填充表
- ms-access - 在表中查找一组值,该值比较基于两个不同标准的计数并匹配计数 [ms-access]
- css - CSS:由多个类定义的渐变?
- php - 使用 str_getcsv 解析 CSV 在新行上失败
- java - 使用 this() 继承
- haskell - 累加器参数如何发送给函数?