情况
我正在使用Azure Logic应用程序执行以下步骤:
请查看此工作流程的屏幕截图
我已经在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创建并编写此文件。