使用Logic Apps修改JSON数据

时间:2019-10-03 13:51:24

标签: json azure azure-logic-apps

我有超过1000个JSON文件,并且每天都会收到此文件。我的问题是语言是EN,我希望它是ENGLISH。我通过Logic App接收到JSON文件,因此可以在逻辑应用程序中执行此操作。

{
  "customer": "ABCD",
  "firstname": "Bob",
  "lastname": "Doe",
  "email": "XYZ",
  "language": "EN"
}

我还将在比利时拥有BEL,在法国拥有FR。

2 个答案:

答案 0 :(得分:0)

当然,这取决于您在做什么。

最简单的例子:

  1. 从HTTP请求的正文中解析了您提供的JSON。
  2. 创建了一个“输出数据”变量来保存更新后的对象。
  3. 通过Switch控件查看该语言属性的值。
  4. 如果值是“ EN”,则在“设置变量”操作中使用了setProperty函数来设置“输出数据”变量。您可以添加其他国家/地区匹配项,并默认将变量设置为原始JSON
  5. 返回了“输出数据”变量作为对请求的响应。

这是应用程序的JSON模式。我既使用输入数据变量,也使用输入变量,但是使用输出变量,则应该可以做到这一点。

{
    "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "triggers": {
        "manual": {
            "type": "Request",
            "kind": "Http",
            "inputs": {
                "schema": {
                    "properties": {
                        "customer": {
                            "type": "string"
                        },
                        "email": {
                            "type": "string"
                        },
                        "firstname": {
                            "type": "string"
                        },
                        "language": {
                            "type": "string"
                        },
                        "lastname": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                }
            }
        }
    },
    "actions": {
        "Input_Data": {
            "runAfter": {},
            "type": "InitializeVariable",
            "inputs": {
                "variables": [
                    {
                        "name": "Data",
                        "type": "Object",
                        "value": "@triggerBody()"
                    }
                ]
            }
        },
        "Output_Data": {
            "runAfter": {
                "Input_Data": [
                    "Succeeded"
                ]
            },
            "type": "InitializeVariable",
            "inputs": {
                "variables": [
                    {
                        "name": "Output Data",
                        "type": "Object"
                    }
                ]
            }
        },
        "Parse_JSON": {
            "runAfter": {
                "Output_Data": [
                    "Succeeded"
                ]
            },
            "type": "ParseJson",
            "inputs": {
                "content": "@variables('Data')",
                "schema": {
                    "customer": "ABCD",
                    "email": "XYZ",
                    "firstname": "Bob",
                    "language": "EN",
                    "lastname": "Doe"
                }
            }
        },
        "Response": {
            "runAfter": {
                "Switch": [
                    "Succeeded"
                ]
            },
            "type": "Response",
            "kind": "Http",
            "inputs": {
                "body": "@variables('Output Data')",
                "statusCode": 200
            }
        },
        "Switch": {
            "runAfter": {
                "Parse_JSON": [
                    "Succeeded"
                ]
            },
            "cases": {
                "Case": {
                    "case": "EN",
                    "actions": {
                        "Set_variable": {
                            "runAfter": {},
                            "type": "SetVariable",
                            "inputs": {
                                "name": "Output Data",
                                "value": "@setProperty(variables('Data'), 'language', 'English')"
                            }
                        }
                    }
                }
            },
            "default": {
                "actions": {
                    "Set_variable_2": {
                        "runAfter": {},
                        "type": "SetVariable",
                        "inputs": {
                            "name": "Output Data",
                            "value": "@variables('Data')"
                        }
                    }
                }
            },
            "expression": "@body('Parse_JSON')['language']",
            "type": "Switch"
        }
    },
    "outputs": {}
}

答案 1 :(得分:0)

如果您尚未解决此问题,请参阅下面的解决方案,它可能会帮助您解决问题,并且我们可以轻松地对其进行操作。

由于我不知道json文件的来源以及文件的存储位置,因此在我的逻辑应用程序中,我将json文件上传到Azure blob存储中。

首先,我在我的逻辑应用程序中使用“获取blob内容”操作来获取json文件的内容。 enter image description here

第二,初始化一个名为“ jsonString”的变量,以字符串类型存储json。 enter image description here

然后通过“ replace()”函数执行替换操作。 enter image description here 完整的表达式是

replace(variables('jsonString'), 'EN', 'ENGLISH')

现在我们可以得到期望的结果json。 enter image description here

如果您有很多json文件,则可以使用“列出blob”操作列出blob存储中的所有json文件,然后使用“获取blob内容”操作。

希望对您的问题有帮助〜