如何将 json 转换为 Power Apps 中的集合

How to convert json to collection in power apps

我有一个强大的应用程序,它使用来自电力自动化的流程。

我的流程正在执行 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 创建一个集合以绑定到图库视图?

我找到了解决方案。我终于从流程的响应中创建了一个集合。 流的名称是 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 集合中的账号和名称绑定到图库视图

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

我的解决方案是修改流程本身,我 return 编辑 Response 而不是 Respond to a Power app or Flow,所以基本上我可以 return 来自 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"
                    }
        }
}