如何在Power应用程序中将JSON转换为集合

问题描述

我有一个Power应用程序,它使用Power自动化流程。

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

enter image description here

这是文本的JSON:

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

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

这就像文本。这是我尝试绑定列表的方法

enter image description here

如何从JSON创建一个收藏夹以绑定到图库视图?

解决方法

我找到了解决方案。我终于根据流程的响应创建了一个集合。 该流的名称为GetVendor。

流的响应是这样的:

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

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

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

然后我可以将_vendorDatra集合中的accountnum和名称绑定到图库视图中

,

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

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

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

enter image description here

解决方案是手动检查响应架构并将所有列类型更改为以下三种类型之一,因为其他类型不受支持: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"
                    }
        }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...