在逻辑应用中字符串化 JSON



我们使用逻辑应用将消息发送到服务总线。这些消息稍后将由另一个服务使用,该服务期望消息内容是一个字符串 - 本质上是一个字符串化的 JSON 对象,带有转义字符。

我们找不到在

逻辑应用中字符串化 JSON 对象的方法。即使我们显式提供转义字符串,逻辑应用本身也会检测到它是字符串化的 JSON,并将其取消转义,然后将其作为 JSON 对象发送。我们不想要这样,我们只是希望它按原样发送字符串。我们已经尝试将内容类型更改为文本/纯文本,但它不起作用。逻辑应用始终将未转义的字符串作为 JSON 发送。

MSDN:https://social.msdn.microsoft.com/Forums/office/en-US/e5dee958-09a7-4784-b1bf-facdd6b8a568/post-json-from-logic-app-how-to-escape-data?forum=azurelogicapps 上的这篇文章没有帮助,因为这样做会违反消息消费服务的请求协定

是否需要字符串化消息包含开始和结束双引号?

试过这个,它对我有用。

  1. 我将 JSON 对象作为撰写的输出
  2. 然后,我使用转义字符串化 JSON 的 Base64 编码值初始化了一个变量(您需要添加所需的所有正确转义,我的只是一个 PoC(
  3. 然后,将 Base64 中已有的变量发送到服务总线(需要删除该操作上的编码(。

    "actions": {
        "Compose_JSON_Object": {
            "inputs": {
                "message": "I want this as a string"
            },
            "runAfter": {},
            "type": "Compose"
        },
        "Initialise_Variable_with_Stringified_JSON_Base64_Encoded": {
            "inputs": {
                "variables": [
                    {
                        "name": "jsonAsStringBase64",
                        "type": "String",
                        "value": "@base64(concat('"', replace(string(outputs('Compose_JSON_Object')), '"', '\"'), '"'))"
                    }
                ]
            },
            "runAfter": {
                "Compose_JSON_Object": [
                    "Succeeded"
                ]
            },
            "type": "InitializeVariable"
        },
        "Send_message": {
            "inputs": {
                "body": {
                    "ContentData": "@variables('jsonAsStringBase64')",
                    "ContentType": "text/plain"
                },
                "host": {
                    "connection": {
                        "name": "@parameters('$connections')['servicebus']['connectionId']"
                    }
                },
                "method": "post",
                "path": "/@{encodeURIComponent(encodeURIComponent('temp'))}/messages",
                "queries": {
                    "systemProperties": "None"
                }
            },
            "runAfter": {
                "Initialise_Variable_with_Stringified_JSON_Base64_Encoded": [
                    "Succeeded"
                ]
            },
            "type": "ApiConnection"
        }
    },
    

这样,我得到了字符串化的消息。

相关内容

  • 没有找到相关文章

最新更新