【问题标题】:How do I return JSON from my Azure Storage Queue?如何从 Azure 存储队列返回 JSON?
【发布时间】:2019-04-02 19:12:32
【问题描述】:

我有一个将 JSON 放入队列的逻辑应用。

再简单不过了。但是,当我将触发器用于新消息时,原始输出显示如下:

    "body": {
        "MessageId": "e705a261-f2c4",
        "InsertionTime": "Tue, 02 Apr 2019 14:22:24 GMT",
        "ExpirationTime": "Tue, 09 Apr 2019 14:22:24 GMT",
        "PopReceipt": "AgAAAAMAAAAAA=",
        "TimeNextVisible": "Tue, 02 Apr 2019 19:03:32 GMT",
        "DequeueCount": "69",
        "MessageText": "{\"etag\":\"\",\"ItemInternalId\":\"ab5c-4859-a755\",\"LastChangeDate\":\"2019-04-02T13:37:32.9638012Z\",\"is_current_employee\":true}"
    }

当我尝试使用 body 时,这让我非常头疼,尤其是当我将原始 MessageText 传输到我的 Liquid 模板时。我尝试了表达式json(triggerBody()),但它不起作用,因为第一个“/”而失败。我尝试使用 Parse JSON 操作,但这不起作用,因为它只是为了将 JSON 映射到模式而失败,因为 MessageText 无论如何都是一个字符串。

  • 是否有JSON.parse(triggerBody()) 等效项?文档没有 显示转义的 JSON 示例。
  • 我是否不正确地存储了 JSON?

我创建了一个 NodeJS 函数来逐字返回一个带有 JSON 内容类型标头的 JSON.parse()。这似乎是对资源的巨大浪费。

编辑: 我得到的一种解决方案是在我添加到队列时手动进行 base64 编码,然后在我从队列中拉出时手动进行@json(decodeBase64(triggerBody()?['MessageText']))。结果有效,但不会在引擎盖下编码两次?

【问题讨论】:

  • 你试过json.stringify(..) 吗?
  • @HimanshuAhuja 这不是真正的 Azure 表达式。如果是的话,只需双重转义我的MessageText 字符串。我需要 azure json 表达式来处理转义字符串。
  • @VictorioBerra messageText 是否具有您知道的已定义架构或者它是动态的?
  • @HariHaran 队列中的消息是动态的,我们没有它的架构。我不知道如何将模式应用于队列。目标是将 JSON 传递给流动模板进行转换。

标签: azure-logic-apps


【解决方案1】:

我也在尝试理解您的问题..我尝试将消息添加到队列并在逻辑中检索,但我没有看到任何此类问题..我错过了什么吗?

在逻辑应用中检索到的消息

我在电子邮件中得到这样的输出

{"ItemInternalId":"ab5c-4859-a755","LastChangeDate":"2019-04-02T13:37:32.9638012Z","is_current_employee":true}

【讨论】:

  • 你能告诉我发送电子邮件的原始输入吗? json 被转义了吗?另外,消息是如何被base64解码的?这是由触发器自动完成的吗?
  • 所以,我不知道我做了什么。但它现在似乎按预期工作。
猜你喜欢
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
  • 1970-01-01
  • 2020-10-15
  • 2012-09-05
  • 1970-01-01
相关资源
最近更新 更多