Power Apps:从多SharePoint列表创建嵌套集合并生成嵌套JSON
在Power Apps中创建嵌套集合并转换为指定JSON格式
前提条件
已导入3个SharePoint列表对应的集合:
colService:含唯一标识serviceID,以及Service、ServiceOwner等字段colServer:含关联字段serviceID、唯一标识serverID,以及ServerName、OS、CPU、RAM等字段colDisk:含关联字段serviceID、serverID,以及MP、Size等字段
步骤1:创建包含磁盘嵌套的服务器集合
先为每个服务器匹配对应的磁盘列表,生成带嵌套磁盘的服务器集合:
ClearCollect( colNestedServers, AddColumns( // 仅保留需要的服务器字段(按需调整) ShowColumns(colServer, "serviceID", "serverID", "ServerName", "OS", "CPU", "RAM"), "Disks", // 过滤当前服务器对应的磁盘,仅保留需要的字段 ShowColumns( Filter(colDisk, serverID = colServer[@serverID] && serviceID = colServer[@serviceID]), "MP", "Size" ) ) )
步骤2:创建最终的服务嵌套集合
将服务与对应的嵌套服务器列表关联,生成目标层级的集合:
ClearCollect( colFinalNestedData, AddColumns( // 仅保留需要的服务字段(按需调整) ShowColumns(colService, "serviceID", "Service", "ServiceOwner"), "Servers", // 过滤当前服务对应的嵌套服务器集合 Filter(colNestedServers, serviceID = colService[@serviceID]) ) )
步骤3:转换为指定格式的JSON
使用JSON函数将嵌套集合转换为格式化的JSON字符串:
Set( jsonOutput, JSON(colFinalNestedData, JSONFormat.IgnoreBinaryData & JSONFormat.IndentFour) )
JSONFormat.IgnoreBinaryData:避免集合中存在二进制数据导致转换失败JSONFormat.IndentFour:生成带缩进的美观JSON格式,与示例结构一致
字段名适配提示
如果原集合的字段名与目标JSON的键名不匹配(比如原服务字段是ServiceName而非Service),需要在AddColumns中重命名字段,示例:
AddColumns( colService, "Service", ServiceName, // 将原字段ServiceName重命名为目标键名Service "ServiceOwner", OwnerEmail, "Servers", Filter(colNestedServers, serviceID = colService[@serviceID]) )
内容的提问来源于stack exchange,提问作者toc
相关产品推荐
相关产品推荐

