json - JOLT 移位转换以过滤数组中的值
问题描述
我想使用 JOLT 转换来做两件事:
- 过滤名为 myarray 的数组中的元素,以便仅保留具有“v_518”属性的元素
- 过滤掉除“v_518”和“lfdn”之外的其余元素的所有属性
输入:
{
"isError": false,
"isValid": true,
"myarray": [
{
"p_0001": "1",
"p_0002": "1",
"p_0003": "1",
"p_0004": "1",
"v_518": "0,214506186",
"lfdn": 89709
},
{
"p_0001": "2",
"p_0002": "1",
"p_0003": "1",
"v_518": "0,3823236",
"lfdn": 89710
},
{
"p_0001": "3",
"p_0002": "1",
"p_0003": "1",
"lfdn": 89711
}
],
"errorMessage": null,
"exceptionMessage": null,
"innerExceptionMessage": null
}
期望的输出:
{
"isError": false,
"isValid": true,
"myarray": [
{
"v_518": "0,214506186",
"lfdn": 89709
},
{
"v_518": "0,3823236",
"lfdn": 89710
}
],
"errorMessage": null,
"exceptionMessage": null,
"innerExceptionMessage": null
}
到目前为止我尝试过的,但没有按预期工作:
[
{
"operation": "shift",
"spec": {
"isError": "isError",
"isValid": "isValid",
"myarray": {
// loop thru all the elements in value array
"*": {
"v_518": {
// if the value "v_518" exists
// grab the whole object and write it out to
// a v_518_array array.
"@(1,v_518)": "v_518_array",
"@(1,lfdn)": "v_518_array"
}
}
},
"errorMessage": "errorMessage",
"exceptionMessage": "exceptionMessage",
"innerExceptionMessage": "innerExceptionMessage"
}
}
]
我尝试使用http://jolt-demo.appspot.com/#andrewkcarter2中的示例,但我不知道该怎么做。
解决方案
我能够解决我的问题。这个答案是我需要让球滚动的提示:https ://stackoverflow.com/a/38154541/1561441
关键是引用您当前正在转换的数组"value" = "array[&1].value"
。
在我看来,我在这个问题上花了太多时间。有人知道 Jolt 语法的好文档吗?我自己用谷歌搜索找不到满意的。
[
{
"operation": "shift",
"spec": {
"isError": "isError",
"isValid": "isValid",
"myarray": {
// loop thru all the elements in value array
"*": {
"v_518": {
// if the value "v_518" exists
// grab the whole object and write it out to
// a v_518_array array.
"@1": "v_518_array"
}
}
},
"errorMessage": "errorMessage",
"exceptionMessage": "exceptionMessage",
"innerExceptionMessage": "innerExceptionMessage"
}
},
{
"operation": "shift",
//Transform array: https://stackoverflow.com/questions/37865871/how-do-i-transform-an-array-using-jolt
"spec": {
"v_518_array": {
// loop thru all the elements in value array
"*": {
"v_518": "v_518_array[&1].v_518",
"lfdn": "v_518_array[&1].lfdn"
}
}
}
}
]
这是一个稍微好一点的解决方案:
[
{
"operation": "shift",
"spec": {
"isError": "isError",
"isValid": "isValid",
"myarray": {
// loop thru all the elements in value array
"*": {
"v_518": {
// if the value "v_518" exists
// grab the whole object and write it out to
// a v_518_array array.
"@1": "v_518_array"
}
}
},
"errorMessage": "errorMessage",
"exceptionMessage": "exceptionMessage",
"innerExceptionMessage": "innerExceptionMessage"
}
},
{
"operation": "shift",
//Transform array: https://stackoverflow.com/questions/37865871/how-do-i-transform-an-array-using-jolt
"spec": {
"v_518_array": {
// loop thru all the elements in value array
"*": {
"v_518": "&2[&1].v_518", //notice the generic shorthand here
"lfdn": "&2[&1].lfdn"
}
}
}
}
]
推荐阅读
- c# - 是否可以在表单 UI 之外呈现表单组件?C#
- http - 向 dart:io HttpClient 添加自定义验证逻辑
- javascript - 我是不和谐机器人场景的新手,每次我在终端输入“node index.js”时它都不起作用
- c# - 使用 C# .net 通过 TCP/IP 从麦克风传输实时实时音频
- c++ - 什么类型的转换适合从 unsigned char* 转换为 char*?
- c# - 按钮应在 WPF C# 中基于 MVVM 模式打开新的 ContentControl
- c++ - 将 WinUI 与 C++ 一起使用的指南
- reactjs - 使用 create-react-app 构建的应用程序中不支持的浏览器的通知
- python - 如何正确使用 tkinter 错误消息框等待用户输入满足要求?
- json - Highcharts - 用变量注入数据