在逻辑应用程序中字符串化JSON

在逻辑应用程序中字符串化JSON,json,azure,azure-logic-apps,stringify,azure-servicebus-topics,Json,Azure,Azure Logic Apps,Stringify,Azure Servicebus Topics,我们正在使用逻辑应用程序向服务总线发送消息。这些消息稍后将被另一个服务使用,该服务希望消息内容是一个字符串——本质上是一个字符串化的JSON对象,带有转义字符 我们无法在逻辑应用程序中找到将JSON对象字符串化的方法。即使我们显式地提供一个转义字符串,逻辑应用程序本身也会检测到它是字符串化的JSON,并对其进行取消扫描,然后将其作为JSON对象发送。我们不希望这样,我们只是希望它按原样发送字符串。我们已经尝试将内容类型更改为text/plain,但不起作用。logic应用程序始终以JSON的形式

我们正在使用逻辑应用程序向服务总线发送消息。这些消息稍后将被另一个服务使用,该服务希望消息内容是一个字符串——本质上是一个字符串化的JSON对象,带有转义字符

我们无法在逻辑应用程序中找到将JSON对象字符串化的方法。即使我们显式地提供一个转义字符串,逻辑应用程序本身也会检测到它是字符串化的JSON,并对其进行取消扫描,然后将其作为JSON对象发送。我们不希望这样,我们只是希望它按原样发送字符串。我们已经尝试将内容类型更改为text/plain,但不起作用。logic应用程序始终以JSON的形式发送未转换的字符串


MSDN:上的这篇文章没有帮助,因为这样做会违反消息使用服务的请求契约

您是否需要字符串化的消息包含开头和结尾双引号

我试过这个,它对我有效

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

  • 这样,我就把信息串起来了


    HTH

    如果您能提供发送的消息格式,将更有帮助。您最好添加屏幕截图。您是否介意分享您期望的消息格式或其他服务如何处理该消息?已验证其有效性!这只是一条建议,在修复此问题时,我经常切换设计器和代码视图,以确保没有出现任何语法错误。
    "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"
        }
    },