Jolt-基于索引需要迭代一个列表并从索引中形成公共对象
Posted
技术标签:
【中文标题】Jolt-基于索引需要迭代一个列表并从索引中形成公共对象【英文标题】:Jolt- Based on the index need to iterate a list and form common object from the index 【发布时间】:2022-01-22 18:28:04 【问题描述】:我需要迭代一个可以具有相同标签名称但具有不同索引(如 0、1、2)的列表。所以我需要迭代列表,取出公共索引并从该索引中取出名称和值标签并形成另一个列表。
请求:
"characteristic": [
"name": "BucketName",
"value": "testName0",
"@type": "bucketInfo",
"arrayIndex": "0"
,
"name": "BucketName",
"value": "testName1",
"@type": "bucketInfo",
"arrayIndex": "1"
,
"name": "BucketName",
"value": "testName2",
"@type": "bucketInfo",
"arrayIndex": "2"
,
"name": "BucketId",
"value": "testId0",
"@type": "bucketInfo",
"arrayIndex": "0"
,
"name": "BucketId",
"value": "testId1",
"@type": "bucketInfo",
"arrayIndex": "1"
,
"name": "BucketId",
"value": "testId2",
"@type": "bucketInfo",
"arrayIndex": "2"
]
需要回复:
"bucketList": [
"BucketName": "testName0",
"BucketId": "testId0"
,
"BucketName": "testName1",
"BucketId": "testId1"
,
"BucketName": "testName2",
"BucketId": "testId2"
]
我们如何根据来自 alist 的索引来实现这一点?
当有更多元素时,如何处理这种情况以跳过如果值未到来并仅添加即将到来的标签。 示例请求:
"characteristic": [
"name": "BucketName",
"value": "testName0",
"@type": "bucketInfo",
"arrayIndex": "0"
,
"name": "BucketId",
"value": "testId0",
"@type": "bucketInfo",
"arrayIndex": "0"
,
"name": "BucketType",
"value": "testType1",
"@type": "bucketInfo",
"arrayIndex": "1"
,
"name": "BucketId",
"value": "testId1",
"@type": "bucketInfo",
"arrayIndex": "1"
,
"name": "BucketName",
"value": "testName2",
"@type": "bucketInfo",
"arrayIndex": "2"
,
"name": "BucketId",
"value": "testId2",
"@type": "bucketInfo",
"arrayIndex": "2"
,
"name": "BucketId",
"value": "testId3",
"@type": "bucketInfo",
"arrayIndex": "3"
,
"name": "BucketName",
"value": "testName3",
"@type": "bucketInfo",
"arrayIndex": "3"
,
"name": "BucketData",
"value": "testData3",
"@type": "bucketInfo",
"arrayIndex": "3"
]
预期响应:
"bucketlist": [
"BucketName": "testName0",
"BucketId": "testId0"
,
"BucketType": "testType1",
"BucketId": "testId1"
,
"BucketName": "testName2",
"BucketId": "testId2"
,
"BucketName": "testName3",
"BucketId": "testId3",
"BucketData": "testData3"
]
【问题讨论】:
【参考方案1】:您可以应用两个连续的 shift 转换。以 "@(2,arrayIndex)" 为公因子,以便在第一次转换中组合常用标记数组下的元素,然后在第二次转换中根据需要显示它们,例如 p>
[
"operation": "shift",
"spec":
"characteristic":
"*":
"value":
"@(1,value)": "@(2,arrayIndex).@(2,name)"
,
"operation": "shift",
"spec":
"*": "bucketList[]"
]
【讨论】:
感谢您的快速帮助。但是当有更多这样的元素并且跳过一些元素时,不会添加新元素的值。总是 bucketId 和 bucketName 来自上述规范。 我在@Barbaros 上面编辑了问题 是的,需要动态@Barbaros 感谢@Barbaros 的快速解决方案 不客气@Chethan,好好学习以上是关于Jolt-基于索引需要迭代一个列表并从索引中形成公共对象的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用iloc函数基于dataframe数据行(row)的索引抽取单行或者多行数据其中多行索引需要嵌入在列表方括号[]中或使用:符号形成起始和终止范围索引
pandas读取csv数据index_col参数指定作为行索引的数据列索引列表形成复合(多层)行索引使用方括号[]基于列索引元组列表索引多列数据(index tuple list)
pandas读取csv数据index_col参数指定作为行索引的数据列索引列表形成复合(多层)行索引loc基于行层索引的最外层行索引索引行数据(outermost row index)
pandas读取csv数据index_col参数指定作为行索引的数据列索引列表形成复合(多层)行索引使用iloc基于行索引位置筛选dataframe的指定单个数据行
pandas读取csv数据index_col参数指定作为行索引的数据列索引列表形成复合(多层)行索引使用iloc基于行索引位置筛选dataframe的指定单个数据行
pandas使用read_csv函数读取csv数据index_col参数指定作为行索引的数据列索引列表形成复合(多层)行索引loc基于行层索引的最外层两个行索引索引行数据