PowerApps:将 Table 格式化为 JSON

PowerApps: Format Table to JSON

我想将我的数据从 PowerApps 中的 table 格式转换为 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,因为它们为空。我想要做的是仍然包括其值设置为 null 的列。 像这样:

[
{
    "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 中做到这一点?

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

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