如何在Logic App中将字符串解析为JSON?

时间:2019-02-21 03:09:21

标签: azure-logic-apps

我有一个JSON,我从下面收到来自外部实体的信息。如您所见,requestbody参数显示为string,即使它是JSON。那么如何取消转义以便可以在下游正确解析呢?

{
  "emailaddress": "174181@mycomp.com",
  "requestbody": "{\"Id\":\"57518139-687c-4223-b08b-342f4ff426ca\",\"Properties\":{\"PrincipalId\":\"d701e7aa-5a0a-4c4a-81be-4c4b7a3967ce\",\"RoleDefinitionId\":\"/subscriptions/64ba3e4c-45e3-4d55-8132-6731cf25547f/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635\",\"Scope\":\"/subscriptions/64ba3e4c-45e3-4d55-8132-6731cf25547f\"}}"
}

2 个答案:

答案 0 :(得分:1)

  1. 使用解析JSON操作,如下所示:

内容:

{
  "emailaddress": "174181@mycomp.com",
  "requestbody": "{\"Id\":\"57518139-687c-4223-b08b-342f4ff426ca\",\"Properties\":{\"PrincipalId\":\"d701e7aa-5a0a-4c4a-81be-4c4b7a3967ce\",\"RoleDefinitionId\":\"/subscriptions/64ba3e4c-45e3-4d55-8132-6731cf25547f/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635\",\"Scope\":\"/subscriptions/64ba3e4c-45e3-4d55-8132-6731cf25547f\"}}"
}

架构

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "properties": {
        "emailaddress": {
            "type": "string"
        },
        "requestbody": {
            "type": "string"
        }
    },
    "required": [
        "emailaddress",
        "requestbody"
    ],
    "type": "object"
}

ParseJson

  1. 初始化变量
-Name = Variable Name
-Type = Object
-Value = json(body('Parse_JSON')['requestbody'])

enter image description here

  1. 现在,您可以提取Json字符串的属性,如下所示:
variables('jsonobj')?['Properties']

enter image description here

我的示例的完整代码视图:

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "Initialize_variable": {
                "inputs": {
                    "variables": [
                        {
                            "name": "jsonobj",
                            "type": "Object",
                            "value": "@json(body('Parse_JSON')['requestbody'])"
                        }
                    ]
                },
                "runAfter": {
                    "Parse_JSON": [
                        "Succeeded"
                    ]
                },
                "type": "InitializeVariable"
            },
            "Parse_JSON": {
                "inputs": {
                    "content": {
                        "emailaddress": "174181@mycomp.com",
                        "requestbody": "{\"Id\":\"57518139-687c-4223-b08b-342f4ff426ca\",\"Properties\":{\"PrincipalId\":\"d701e7aa-5a0a-4c4a-81be-4c4b7a3967ce\",\"RoleDefinitionId\":\"/subscriptions/64ba3e4c-45e3-4d55-8132-6731cf25547f/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635\",\"Scope\":\"/subscriptions/64ba3e4c-45e3-4d55-8132-6731cf25547f\"}}"
                    },
                    "schema": {
                        "$schema": "http://json-schema.org/draft-04/schema#",
                        "properties": {
                            "emailaddress": {
                                "type": "string"
                            },
                            "requestbody": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "emailaddress",
                            "requestbody"
                        ],
                        "type": "object"
                    }
                },
                "runAfter": {},
                "type": "ParseJson"
            },
            "Response": {
                "inputs": {
                    "body": "@variables('jsonobj')?['Properties']",
                    "statusCode": 200
                },
                "kind": "Http",
                "runAfter": {
                    "Initialize_variable": [
                        "Succeeded"
                    ]
                },
                "type": "Response"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
            "manual": {
                "inputs": {
                    "schema": {}
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    }
}

答案 1 :(得分:0)

最简单的方法是使用以下表达式:

for( int k = 0; k < rows; k++) {
    for( int l = 0; l < columns; l++) /* { */
        cout << matrix[k][l] << " ";
    /* } */
    cout << endl;

}

reader.close();

count_ones(matrix, rows,columns);

return 0;

下面是一个使用@json(outputs('Mock_example_data').requestbody) 操作模拟数据并使用另一个Compose操作作为概念证明的示例。

enter image description here