Power Apps嵌套表格解析JSON时自动插入Value列的移除问题咨询
Power Apps 嵌套数组序列化自动生成Value字段问题解决方案
问题描述
我在处理JSON文件时遇到问题,希望得到大家的协助:
我搭建了一个Power Apps画布应用,会在最后一个页面将多个数据表汇总为最终集合,后续需将该集合转换为JSON文件,通过Power Automate发送到我们SQL数据库的服务端点。
目前的问题是:集合中所有包含嵌套表的字段(如areas、auditors等),生成JSON时都会被自动插入名为Value的列,我需要移除该列,让这些嵌套表显示为简单数组格式。例如我预期输出为"areas":[1,2],但实际输出为"areas":[{"Value":1},{"Value":2}]。
以下是我发送到流之前使用的Collect语句,它从应用内的多个其他集合中取值:
Collect( SubmitAuditRequest, { results: [ { questionKey: Value(lblQKey.Text), answer: txtQSCM.Text, addToActionPlan: false, additionalComments: txtQComments.Text, typeCode: 1, score: txtQGrade.Text, actions: [ { parentKey: 1, parentTypeCode: "RECORD_PARENT_TYPE_##3", action: txtQActions.Text, dateRequired: txtQActionDue.Text, assignedToKey: LblQUserKey.Text, statusCode: "ACTION_STATUS_TYPE_##1", priorityCode: "PRIORITY_TYPE_##3" } ], attachments: [ { parentKey: 1, parentTypeCode: "RECORD_PARENT_TYPE_##2", documentBase64: "", name: "New Image", extension: "img", attachmentTypeCode: "RECORD_DOCUMENT_TYPE_##1" } ] } ], organisationKey: 1, name: "TestAudit", typeCode: "AUDIT_TYPE_##1", statusCode: "AUDIT_STATUS_TYPE_##1", auditors: [ 1, 2 ], auditDate: Text( Today(), "yyyy-mm-dd" ), staffLeadList: [ 1, 2 ], areas: [ 1, 2 ], attachments: [ { parentKey: 2, parentTypeCode: "RECORD_PARENT_TYPE_##2", documentBase64: "", name: "Image 01", extension: "img", attachmentTypeCode: "RECORD_DOCUMENT_TYPE_##1" }, { parentKey:2, parentTypeCode: "RECORD_PARENT_TYPE_##2", documentBase64: "", name: "AudioClip", extension: ".3gp", attachmentTypeCode: "RECORD_DOCUMENT_TYPE_##2" } ], staffList: [ 3, 4 ], focusArea: [ "Focus" ], focusSubArea: [ "Focus Area", "Focus Area 2" ], successCriteria: [ "Success Criteria 1", "Success Criteria 2" ], comment: "No comment", Key: 0, userKey: 1, IsActive: true } ); SubmitAudit.Run( JSON(SubmitAuditRequest), userSettings.token );
相关截图:

解决方案
这个问题是Power Apps的JSON函数内置序列化规则导致的:所有单列集合/表在序列化时,都会自动将每个值封装为带Value键的对象,没有内置开关可以直接关闭这个逻辑,可通过两种方案解决:
方案1:Power Apps侧直接处理(改动量最小)
在调用JSON函数生成字符串后,通过文本替换去掉多余的Value封装结构,修改你的SubmitAudit.Run调用代码即可:
SubmitAudit.Run( // 逐层替换掉多余的{"Value":和对应的闭合} Substitute( Substitute( Substitute( JSON(SubmitAuditRequest), "{""Value"":", "" ), "}", "" ), // 替换后可能出现的多余逗号,根据实际输出调整 ",,", "," ), userSettings.token );
注意:如果你的其他业务字段里包含{"Value":或者独立的}字符,不要用这个方案,避免误伤业务数据。
方案2:Power Automate侧处理(稳定性最高)
无需修改Power Apps代码,在Power Automate流里做字段转换即可:
- 接收Power Apps传入的JSON字符串后,添加「解析JSON」操作,用你实际拿到的带Value的JSON内容生成Schema
- 对每个需要转换的单值数组字段(auditors、areas、staffList等),添加「选择」操作,从选择对应的数组字段,映射列直接写表达式
item()?['Value'],即可得到纯值数组 - 把所有处理好的字段重新组合为符合要求的JSON对象,再调用SQL服务端点即可
内容的提问来源于stack exchange,提问作者ITBirdCEH
相关产品推荐
相关产品推荐

