如何在azure逻辑应用程序工作流程中从json文件数据中删除或防止转义斜线

问题描述 投票:0回答:1

情况

我正在使用Azure Logic应用程序执行以下步骤:

  1. 从blob存储中加载/读取JSON文件。使用R从JSONlite包中的toJSON函数创建并用R编写该文件。
  2. 从此JSON文件获取文件内容
  3. [将其转换为JSON格式(使用表达式json())
  4. 将转换后的输出插入到Azure表存储中
  5. 请查看此工作流程的屏幕截图

azure workflow

我已经在R中创建了一个JSON文件(使用JSONlite包)。在R控制台中打印时,看起来不错:

{"PartitionKey":"pdf","RowKey":"robject)test","nr":"24330087","status":true}

这是我想要的“格式”。采用这种格式时,它可以与逻辑应用程序顺利地插入到Azure表存储中。

问题

但是当我将上面的JSON文件写入Azure Blob,并将此文件用作逻辑应用程序工作流中的输入时,这些转义斜线会导致问题

Blob存储中的文件未由逻辑应用解释为所需格式(不包含转义斜线),包括转义斜线()。而且我认为这会导致逻辑应用程序出现问题。我粘贴了没有这些斜杠的硬编码格式。这行得通。但是硬编码不是这里的选择。

在逻辑应用'json()'表达式的格式下面。它包括可怕的转义符。

[
  "{\"PartitionKey\":\"pdf\",\"RowKey\":\"coolblue_factuur_1744212700.pdf\",\"kvknr\":\"24330087\",\"active_status\":true}"
]

然后发生此错误:

{
  "odata.error": {
    "code": "InvalidInput",
    "message": {
  "lang": "en-US",
  "value": "An error occurred while processing this request.\nRequestId:xxxx\nTime:2019-11-20T09:02:46.6051827Z"
}
  }
}

[经过一些在线研究之后,看起来Logic App在转义斜杠()和它的转义引号(>)上遇到了困难。因此,所有这些(\“)转义都在阻塞流程。

问题

如何处理\“(转义斜杠?)。我所希望的是,逻辑应用程序可以从blob存储中正确读取JSON文件,将其转换并将数据插入表存储中。因此,理想情况下:将Blob存储中的JSON文件转换为无转义斜杠的格式。我试图在R中对此进行预处理,但这没有用。

额外信息

下面您可以找到我在逻辑应用程序中采取的步骤:

从Blob存储上传(并获取)的JSON文件

{
"headers": {
    "Pragma": "no-cache",
    "Transfer-Encoding": "chunked",
    "Retry-After": "15",
    "Vary": "Accept-Encoding",
    "x-ms-request-id": "xxxx",
    "Strict-Transport-Security": "max-age=31536000; includeSubDomains",
    "X-Content-Type-Options": "nosniff",
    "X-Frame-Options": "DENY",
    "Timing-Allow-Origin": "*",
    "x-ms-apihub-cached-response": "true",
    "Cache-Control": "no-store, no-cache",
    "Date": "Wed, 20 Nov 2019 09:09:52 GMT",
    "Location": "https://[location url]",
    "Set-Cookie": "[cookieset]",
    "Content-Type": "application/json",
    "Expires": "-1",
    "Content-Length": "452"
},
"body": {
    "Id": "xyz",
    "Name": "robjecttest_parameters_db.json",
    "DisplayName": "robjecttest_parameters_db.json",
    "Path": "/path/robjecttest_parameters_db.json",
    "LastModified": "2019-11-20T09:09:39Z",
    "Size": 95,
    "MediaType": "application/octet-stream",
    "IsFolder": false,
    "ETag": "\"[etag]\"",
    "FileLocator": "[filelocations]",
    "LastModifiedBy": null
}
}

从标题开始,内容类型为'JSON'。但是主体(我想要的数据)是“八位字节流”)。

执行“获取文件内容”操作后:

{
  "$content-type": "application/octet-stream",
  "$content": "[content]"
}

下一步是将'body-data'转换/投射为JSON格式。使用逻辑APP中的表达式和动态内容

json(body('Get_blob_content'))

使用此'输出'作为实体插入表存储。

情况我正在使用Azure逻辑应用程序执行以下步骤:从blob存储中加载/读取JSON文件。使用JSONlite包中的toJSON函数,使用R创建并编写此文件。

您只需要在下面的表达式中用\替换\“:
replace(string(body('Get_blob_content')), '\"', '"')
然后我们可以使用json()进行转换。

更新:

在您要插入表存储的json数据中,下面红色框中的数据引起了问题enter image description here

您不能插入第二级数据。

json azure-storage-blobs azure-table-storage azure-logic-apps jsonlite
1个回答
1
投票
然后我们可以使用json()进行转换。
© www.soinside.com 2019 - 2024. All rights reserved.