arrays - 在 SSIS 中使用 JSONPath 表达式获取每个子节点及其值
问题描述
我正在与 SSIS 和 ZappySys 合作将数据导出到我们的数据库。
从 REST API 源(ZappySys 组件)我得到以下响应:
{
"data": [
{
"id" : "1",
"name" : "a"
"children" : [
{
id" : "11",
"name" : "aa"
"children" : []
},
{
id" : "12",
"name" : "ab"
"children" : []
}
]
},
{
"id" : "2",
"name" : "b"
"children" : [
{
id" : "21",
"name" : "ba"
"children" : [
{
id" : "211",
"name" : "baa"
"children" : []
}
]
},
{
id" : "22",
"name" : "bb"
"children" : []
}
]
}
]
}
我想过滤此响应以从父母、每个孩子、孙子、...
所以它应该是这样的:
id name
----------
1 a
11 aa
12 ab
2 b
21 ba
211 baa
22 bb
是否有任何 jsonpath 表达式可以解决这个问题?或者,当然,SSIS 中任何其他不包含 Skriptcomponent 的解决方案?
谢谢!
解决方案
免责声明:我为ZappySys工作。
要实现您的要求,您需要使用 2 JSON Source 和 Union All Transform,如下所示
假设您有以下示例 JSON(JSON 源上的直接值模式)(我更正了一些丢失的双引号和逗号。
{
"data": [
{
"id" : "1",
"name" : "a",
"children" : [
{
"id" : "11",
"name" : "aa",
"children" : []
},
{
"id" : "12",
"name" : "ab",
"children" : []
}
]
},
{
"id" : "2",
"name" : "b",
"children" : [
{
"id" : "21",
"name" : "ba",
"children" : [
{
"id" : "211",
"name" : "baa",
"children" : []
}
]
},
{
"id" : "22",
"name" : "bb",
"children" : []
}
]
}
]
}
- 拖动第一个 ZS JSON Source 并配置 Filter= $.data[*],取消选中 Include Parent 选项。单击确定保存。将其重命名为读取数据节点
- 拖动第二个 ZS JSON 源并配置 Filter= $..children[*](注意:过滤器中的双点表示任何名称为子级的递归节点),取消选中包含父级选项。单击确定保存。将组件重命名为读取子节点
- 拖动联合所有变换。
- 将两个 JSON 源都连接到 Union All
- 双击 Union ALL 以确保两个列名都已映射(即 id、name),否则您将在下游获得 NULL
- 将 Union ALL 连接到某个目的地(我们使用了 ZS Trash 目的地)
- 右键单击路径并添加数据查看器。运行示例
查看本文以阅读有关双点 JSONPath 表达式的更多信息
推荐阅读
- weka - 在 weka 上运行 LinearRegression 算法的问题“分类器评估中的问题:Null
- wpf - WPF CommandParameter 值在执行时更改为 null
- python - python3套接字永远不会停止尝试读取数据
- r - 为什么在 tidyr::pivot_wider 中尝试使用 names_glue 时会出错?
- macos - 使用 RazorViewToStringRenderer 和 ServiceStack 渲染 razor 页面
- javascript - 我的 JavaScript 代码在 jquery ajax 调用后不会运行
- puppeteer - 如何使用 Puppeteer 从字符串中提取数字?
- angular - 无法在表格中显示数据(角度 9)
- java - getClass() 方法返回的类对象是该类的实例吗?
- c++ - 在递归函数 C++ 中创建向量