2

我有一个使用电源自动化流程的电源应用程序。

我的流程是执行 HTTP 获取并响应 JSON 以支持如下所示的应用程序。

在此处输入图像描述

这是 JSON 作为文本:

{"value": "[{\"dataAreaId\":\"mv\",\"AccountNum\":\"100000\",\"Name\":\"*****L FOOD AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100001\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100014\",\"Name\":\"****(SEB)\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100021\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100029\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"500100\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"500210\",\"Name\":\"****\"}]"}

但是当我尝试将此 JSON 转换为集合时,它的行为不像列表。

它似乎只是一个文本。这是我尝试绑定列表的方法。

在此处输入图像描述

如何从 JSON 创建一个集合以绑定到画廊视图?

4

2 回答 2

3

我找到了解决方案。我终于从流的响应中创建了一个集合。流的名称是 GetVendor。

流的响应是这样的:

{"value": "[{\"dataAreaId\":\"mv\",\"AccountNum\":\"100000\",\"Name\":\"*****L FOOD AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100001\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100014\",\"Name\":\"****(SEB)\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100021\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100029\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"500100\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"500210\",\"Name\":\"****\"}]"}

下面的代码从此响应创建一个列表:

ClearCollect(_vendorData, MatchAll(GetVendors.Run(_token.value).value, "\{""dataAreaId"":""(?<dataAreaId>[^""]*)"",""AccountNum"":""(?<AccountNum>[^""]*)"",""Name"":""(?<Name>[^""]*)""\}"));

我可以将 _vendorDatra 集合中的 accountnum 和 name 绑定到图库视图

于 2020-10-19T14:44:59.110 回答
1

在我的情况下,我遇到了与您相同的问题,但无法将数据导入 _vendorData 集合,因为 MatchAll 正则表达式部分无法正常工作,即使我有完全相同的场景并且我无法使其工作。

我的解决方案是修改流程本身,Response而不是返回Respond to a Power app or Flow,所以基本上我可以从 Http 返回完整请求。 响应步骤

这也给我带来了一些问题,因为当我从示例生成模式时,我无法将流注册到 powerapp 并出现错误Failed during http send request

在此处输入图像描述

解决方案是手动查看响应架构并将所有列类型更改为以下三种之一,因为不支持其他类型stringintegerboolean。对象和数组只能在顶级项目上设置,但不能在子项目上设置,所以如果你有我提到的三个以外的任何东西,请将其替换为字符串。并且任何属性都不能保留未定义的类型。

基本上我更喜欢这个解决方案,因为在 powerapps 本身中,您不需要进行任何转换或任何操作 - 只需按原样使用数据,因为它已经被识别为数组的集合,并且您拥有所有已命名的属性你。

响应步骤模式示例如下。

{
    "type": "object",
    "properties": {
        "PropertyOne": {
            "type": "string"
        },
        "PropertyTwo": {
            "type": "integer"
        },
        "PropertyThree": {
            "type": "boolean"
        },
        "PropertyFour": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "PropertyArray1": {
                        "type": "string"
                    },
                    "PropertyArray1": {
                        "type": "integer"
                    },
                    "PropertyArray1": {
                        "type": "boolean"
                    }
        }
}
于 2021-03-26T16:22:20.727 回答