【问题标题】:PowerApps: Format Table to JSONPowerApps:将表格格式化为 JSON
【发布时间】:2021-10-21 22:23:24
【问题描述】:

我想将我的数据从 PowerApps 中的表转换为 JSON 格式。

这是我的数据:

这是我当前的代码:

Set(
 varJSONProductTagging, 
 JSON(
     <-Source->,
         "ProductCode",
         "Description",
         "KPICode",
         "DSLType"
     ),
     JSONFormat.IndentFour
 ));

结果如下:

[{
    "ProductCode": "SD204",
    "Description": "Broadband Business SDSL 2Mb - Managed",
    "KPICode": "DSL3",
    "DSLType": "SDSL"
},
{
    "ProductCode": "SD219",
    "Description": "Broadband Business SDSL 2Mb - Wires Only",
    "KPICode": "DSL3",
    "DSLType": "SDSL"
},
{
    "ProductCode": "IOMDDI35",
    "Description": "ISDN DDI: Nobles Hospital - 650000"
}]

如您所见,在第 3 组中,缺少 KPICode 和 DSL Type,因为它们为空。我想要做的是仍然包含其值设置为空的列。 像这样:

[
{
    "ProductCode": "SD204",
    "Description": "Broadband Business SDSL 2Mb - Managed",
    "KPICode": "DSL3",
    "DSLType": "SDSL"
},
{
    "ProductCode": "SD219",
    "Description": "Broadband Business SDSL 2Mb - Wires Only",
    "KPICode": "DSL3",
    "DSLType": "SDSL"
},
{
    "ProductCode": "IOMDDI35",
    "Description": "ISDN DDI: Nobles Hospital - 650000"
    "KPICode": null,
    "DSLType": null
}

]

有什么方法可以在 powerapps 中做到这一点?

【问题讨论】:

    标签: json powerapps


    【解决方案1】:

    您可以通过使用ForAll function 强制定义字段来强制“未定义”字段变为空白(null)值。在这种情况下,你会得到类似这样的东西:

    Set(
      varJSONProductTagging, 
      JSON(
        ForAll(
          ShowColumns(
            <-Source->,
            "ProductCode",
            "Description",
            "KPICode",
            "DSLType"),
          {
            ProductCode: ProductCode,
            Description: Description,
            KPICode: Coalesce(KPICode, Blank()),
            DSLType: Coalesce(DSLType, Blank())
          }
       ),
       JSONFormat.IndentFour
     ));
    

    请注意,Coalesce function 不区分未定义、空白或空字符串。在这种情况下,如果 KPICode(或 DSLType)的值之一是空文本,它将在 JSON 输出中转换为 null。如果您不希望这种情况发生,您可以明确地与空白值进行比较:

    Set(
      varJSONProductTagging, 
      JSON(
        ForAll(
          ShowColumns(
            <-Source->,
            "ProductCode",
            "Description",
            "KPICode",
            "DSLType"),
          {
            ProductCode: ProductCode,
            Description: Description,
            KPICode: If(KPICode = Blank(), Blank(), KPICode),
            DSLType: If(DSLType = Blank(), Blank(), DSLType)
          }
       ),
       JSONFormat.IndentFour
     ));
    

    【讨论】:

    • 有效!太感谢了! :)