【问题标题】:Reading blob content from logic apps从逻辑应用读取 blob 内容
【发布时间】:2019-01-28 16:44:19
【问题描述】:

我使用 Azure 数据工厂创建了一个 blob 文件。 使用逻辑应用读取 blob 内容时,我在内容的前缀中收到 77u/,因为这无法将 blob 内容转换为 JSON。尝试将 blob 内容转换为 XML,然后再转换为 JSON,但它不起作用。

谁能告诉我如何解决这个问题?

下面是blob内容:

"body": {
        "$content-type": "application/octet-stream",
        "$content": "77u/W3siUHJvcF8wIjoiQUFBIiwiUHJvcF8xIjoiQjAxNTEwMDEiLCJQcm9wXzIiOiJEIiwiUHJvcF8zIjoiMjAxODA3MDQxNzA1MDIiLCJQcm9wXzQiOiJNSSIsIlByb3BfNSI6Ik4yRVhNSURQIiwiUHJvcF82IjoiQk0iLCJQcm9wXzciOiJVS0RDIiwiUHJvcF84IjoiMTI2NjM3IiwiUHJvcF85IjoiT1BFUiIsIlByb3BfMTAiOm51bGx9DQoseyJQcm9wXzAiOiJNSUQiLCJQcm9wXzEiOiJOMkVYTUlEUCIsIlByb3BfMiI6IjIwMTgwNzA0IiwiUHJvcF8zIjpudWxsLCJQcm9wXzQiOm51bGwsIlByb3BfNSI6bnVsbCwiUHJvcF82IjpudWxsLCJQcm9wXzciOm51bGwsIlByb3BfOCI6bnVsbCwiUHJvcF85IjpudWxsLCJQcm9wXzEwIjpudWxsfQ0KLHsiUHJvcF8wIjoiTUlQIiwiUHJvcF8xIjoiMDEiLCJQcm9wXzIiOiIwLjAiLCJQcm9wXzMiOiIwLjAiLCJQcm9wXzQiOiIwLjAiLCJQcm9wXzUiOiIwLjAiLCJQcm9wXzYiOm51bGwsIlByb3BfNyI6bnVsbCwiUHJvcF84IjpudWxsLCJQcm9wXzkiOm51bGwsIlByb3BfMTAiOm51bGx9DQoseyJQcm9wXzAiOiJNSVAiLCJQcm9wXzEiOiIwMiIsIlByb3BfMiI6IjAuMCIsIlByb3BfMyI6IjAuMCIsIlByb3BfNCI6IjAuMCIsIlByb3BfNSI6IjAuMCIsIlByb3BfNiI6bnVsbCwiUHJvcF83IjpudWxsLCJQcm9wXzgiOm51bGwsIlByb3BfOSI6bnVsbCwiUHJvcF8xMCI6bnVsbH0NCix7IlByb3BfMCI6Ik1JUCIsIlByb3BfMSI6IjAzIiwiUHJvcF8yIjoiMC4wIiwiUHJvcF8zIjoiMC4wIiwiUHJvcF80IjoiMC4wIiwiUHJvcF81IjoiMC4wIiwiUHJvcF82IjpudWxsLCJQcm9wXzciOm51bGwsIlByb3BfOCI6bnVsbCwiUHJvcF85IjpudWxsLCJQcm9wXzEwIjpudWxsfQ0KLHsiUHJvcF8wIjoiTUlQIiwiUHJvcF8xIjoiMDQiLCJQcm9wXzIiOiIwLjAiLCJQcm9wXzMiOiIwLjAiLCJQcm9wXzQiOiIwLjAiLCJQcm9wXzUiOiIwLjAiLCJQcm9wXzYiOm51bGwsIlByb3BfNyI6bnVsbCwiUHJvcF84IjpudWxsLCJQcm9wXzkiOm51bGwsIlByb3BfMTAiOm51bGx9DQoseyJQcm9wXzAiOiJaWloiLCJQcm9wXzEiOiI3IiwiUHJvcF8yIjoiMTU5NjUyNDE0NyIsIlByb3BfMyI6bnVsbCwiUHJvcF80IjpudWxsLCJQcm9wXzUiOm51bGwsIlByb3BfNiI6bnVsbCwiUHJvcF83IjpudWxsLCJQcm9wXzgiOm51bGwsIlByb3BfOSI6bnVsbCwiUHJvcF8xMCI6bnVsbH0NCl0="
    }

【问题讨论】:

    标签: azure-blob-storage azure-data-factory


    【解决方案1】:

    Base64 内容中的前缀77u/ 是由UTF-8 BOM 引起的。通过对Base64内容进行解码,可以看到与开头的UTF-8 BOM字符匹配。

    如果您在数据集格式中指定了encodingName,ADF 将始终生成 BOM。所以你可以把format中的encodingName去掉,生成没有BOM的文件。

    【讨论】:

    • 在复制活动中使用 JSON blob 存储数据集作为接收器,无法将 encodingName 留空,它是一个下拉列表。做什么?
    • Blob 上的 ADF json sink 面临同样的问题。有人找到解决方法了吗?
    【解决方案2】:

    我认为答案对你来说有点晚了,但我希望它可以帮助其他面临同样问题的人。 我通过将 BOM 字符 '77u/' 替换为空字符串 ('') 解决了这个问题,例如Compose 活动:

    json(base64ToString(replace(body('Get_blob_content')?['$content'],'77u/','')))

    这可能不是一个完美的解决方案,但对我来说效果很好。 :)

    问候, 卢卡斯

    【讨论】:

      猜你喜欢
      • 2019-05-09
      • 2018-11-08
      • 2017-09-21
      • 2017-12-22
      • 2021-02-18
      • 2021-02-06
      • 2019-12-11
      • 2019-08-20
      • 1970-01-01
      相关资源
      最近更新 更多