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

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
);

相关截图:
SumbitAuditRequestJSON
SubmitAuditRequest Collection

解决方案

这个问题是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流里做字段转换即可:

  1. 接收Power Apps传入的JSON字符串后,添加「解析JSON」操作,用你实际拿到的带Value的JSON内容生成Schema
  2. 对每个需要转换的单值数组字段(auditors、areas、staffList等),添加「选择」操作,从选择对应的数组字段,映射列直接写表达式item()?['Value'],即可得到纯值数组
  3. 把所有处理好的字段重新组合为符合要求的JSON对象,再调用SQL服务端点即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 06:42:04