You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求提供Jolt转换规则:将特征数组转为带appActivity的AppDetails结构

Jolt数据转换实现

转换规则

  • 生成AppDetails:筛选@type为appDetails的条目,按arrayIndex分组,将同组的name-value映射为AppDetails的属性(其中ID需映射为id);
  • 关联appActivity:筛选@type为appActivity且@baseType为appDetails的条目,当appActivity的valueType与AppDetails的arrayIndex匹配时,将这些属性组合为appActivity对象,关联到对应的AppDetails中。

输入数据

{"characteristic": [{"name": "TestRemark","valueType": "string","value": "251700100113","@baseType": "string","@schemaLocation": "string","@type": "AdditionalInfo","arrayIndex": "0"},{"name": "ID","valueType": "string","value": "fffcfdd2-a4e4-461b-81ca-338889a4a50b","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "0"},{"name": "FirstSignInDate","valueType": "string","value": "10:24:54.934","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "0"},{"name": "AppVersion","valueType": "string","value": "1.0","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "0"},{"name": "UserDeviceOSVersion","valueType": "string","value": "1.0","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "0"},{"name": "LastLoginTimestamp","valueType": "string","value": "2026-08-11 17:05:14.855+00","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "0"},{"name": "DeviceModel","valueType": "string","value": "LGE LM-G810","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "0"},{"name": "ID","valueType": "string","value": "fffcfdd2-a4e4-461b-81ca-338889a4a50b","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "1"},{"name": "FirstSignInDate","valueType": "string","value": "10:24:54.934","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "1"},{"name": "AppVersion","valueType": "string","value": "1.0","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "1"},{"name": "UserDeviceOSVersion","valueType": "string","value": "1.0","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "1"},{"name": "LastLoginTimestamp","valueType": "string","value": "2026-08-11 17:05:14.855+00","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "1"},{"name": "DeviceModel","valueType": "string","value": "LGE LM-G810","@baseType": "string","@schemaLocation": "string","@type": "appDetails","arrayIndex": "1"},{"name": "ActivityName","valueType": "0","value": "LocalLogin","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "0"},{"name": "ActivityType","valueType": "0","value": "LocalLogin","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "0"},{"name": "Timestamp","valueType": "0","value": "2022-08-11 18:10:16.779+00","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "0"},{"name": "Status","valueType": "0","value": "SUCCESSFUL","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "0"},{"name": "Description","valueType": "0","value": "MANUAL","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "0"},{"name": "ActivityName","valueType": "1","value": "LocalLogin","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "0"},{"name": "ActivityType","valueType": "1","value": "LocalLogin","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "0"},{"name": "Timestamp","valueType": "1","value": "2022-08-11 18:10:16.779+00","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "0"},{"name": "Status","valueType": "1","value": "SUCCESSFUL","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "0"},{"name": "Description","valueType": "1","value": "MANUAL","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "0"},{"name": "ActivityName","valueType": "0","value": "LocalLogin","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "1"},{"name": "ActivityType","valueType": "0","value": "LocalLogin","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "1"},{"name": "Timestamp","valueType": "0","value": "2022-08-11 18:10:16.779+00","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "1"},{"name": "Status","valueType": "0","value": "SUCCESSFUL","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "1"},{"name": "Description","valueType": "0","value": "MANUAL","@baseType": "appDetails","@schemaLocation": "string","@type": "appActivity","arrayIndex": "1"}]}

预期输出

{"datas": {"AppDetails": [{"id": "fffcfdd2-a4e4-461b-81ca-338889a4a50b","FirstSignInDate": "10:24:54.934","AppVersion": "1.0","UserDeviceOSVersion": "1.0","LastLoginTimestamp": "2026-08-11 17:05:14.855+00","DeviceModel": "LGE LM-G810","appActivity": [{"ActivityName": "LocalLogin","ActivityType": "LocalLogin","Timestamp": "2022-08-11 18:10:16.779+00","Status": "SUCCESSFUL","Description": "MANUAL"},{"ActivityName": "LocalLogin","ActivityType": "LocalLogin","Timestamp": "2026-11-07 15:04:01.363+00","Status": "SUCCESSFUL","Description": "MANUAL"},{"ActivityName": "LocalLogin","ActivityType": "LocalLogin","Timestamp": "2022-08-10 16:05:44.165+00","Status": "SUCCESSFUL","Description": "MANUAL"}]}, {"id": "fffcfdd2-a4e4-461b-81ca-338889a4a50b","FirstSignInDate": "10:24:54.934","AppVersion": "1.0","UserDeviceOSVersion": "1.0","LastLoginTimestamp": "2026-08-11 17:05:14.855+00","DeviceModel": "LGE LM-G810"}]}}

Jolt转换规范

以下是实现上述转换的Jolt规范:

[
  // 第一步:筛选并分组appDetails和appActivity
  {
    "operation": "shift",
    "spec": {
      "characteristic": {
        "*": {
          "@type": {
            "appDetails": {
              "@(2,arrayIndex)": {
                "@(3,name)": {
                  "ID": "temp.appDetails.&2.id",
                  "*": "temp.appDetails.&2.&"
                },
                "@(3,value)": "temp.appDetails.&2.@(3,name)"
              }
            },
            "appActivity": {
              "@(2,@baseType)": {
                "appDetails": {
                  "@(2,valueType)": {
                    "@(3,name)": "temp.appActivity.&2.&",
                    "@(3,value)": "temp.appActivity.&2.@(3,name)"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  // 第二步:将appActivity按valueType转为数组格式
  {
    "operation": "shift",
    "spec": {
      "temp": {
        "appDetails": {
          "*": "datas.AppDetails[]"
        },
        "appActivity": {
          "*": {
            "*": "temp.appActivityArray.&[]"
          }
        }
      }
    }
  },
  // 第三步:关联appActivity到对应AppDetails
  {
    "operation": "shift",
    "spec": {
      "datas": {
        "AppDetails": {
          "*": {
            "*": "datas.AppDetails[&1].&"
          }
        }
      },
      "temp": {
        "appActivityArray": {
          "*": {
            "*": "datas.AppDetails[&1].appActivity[]"
          }
        }
      }
    }
  },
  // 第四步:清理临时字段
  {
    "operation": "remove",
    "spec": {
      "temp": ""
    }
  }
]

注:该规范先完成AppDetails的分组构建,再将匹配valueType的appActivity条目组合为数组,最终关联到对应arrayIndex的AppDetails对象中。

内容的提问来源于stack exchange,提问作者Dilip Nagaraja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:57:03