簡體   English   中英

通過Stream Analytics-> Service Hub-> Logic Apps在Logic App中解析Json

[英]Parse Json in Logic App from Stream Analytics -> Service Hub -> Logic Apps

我正在嘗試構建將數據插入Sql數據庫的邏輯應用程序。 數據來自Stream Analytics作業,在Service Bus主題上輸出,並在Service Bus觸發器中的Logic Apps中使用。

為了填充所插入行的屬性(可以說它只有一列“名稱”),我發現這應該使用以下語法進行工作:

 "body": {
          "Name": "@{json(decodeBase64(triggerBody()['ContentData'])).Name}"
  },

提供的消息正文包含“名稱”屬性。

但是,運行此程序時出現以下錯誤消息:

{“ code”:“ InvalidTemplate”,“ message”:“在行'1'和列'2017'的輸入'Insert_row'中無法處理模板語言表達式:'模板語言功能'json'參數無效。提供的值'@ \\ u0006string \\ b3http://schemas.microsoft.com/2003/10/Serialization/ {\\“ time \\”:\\“ 2016-05-25T10:29:17.4953250Z \\”,\\“名稱\\ “:\\” Y軸\\ “\\ ”價值\\“:81.0,\\ ”日期\\“:\\ ”2016-05-25T10:29:17.4953250 \\“,\\ ”EventProcessedUtcTime \\“:\\” 2016- 05-25T10:29:17.5525449Z \\“,\\” PartitionId \\“:2,\\” EventEnqueuedUtcTime \\“:\\” 2016-05-25T10:29:17.2220000Z \\“} \\ u0001'無法解析:'意外字符解析值時遇到:@。路徑”,第0行,位置0。'。請參閱https://aka.ms/logicexpressions#json了解用法詳細信息。'。“}

因此,似乎該內容被封裝在另一個信封中,從而無法進行json解析。

1)任何簡單的方法如何解決這個問題?

2)難道這樣的集成就不能在Microsoft Stack中正常工作嗎?

謝謝,Stefan

在工作流定義語言中可用的字符串功能有限的情況下,我不得不使用冗長的方式刪除其他字符串

@{json(substring(replace(decodeBase64(triggerBody()['ContentData']),'@string3http://schemas.microsoft.com/2003/10/Serialization/��', ''),0,sub(length(replace(decodeBase64(triggerBody()['ContentData']),'@string3http://schemas.microsoft.com/2003/10/Serialization/��', '')),1))).fieldname}

有一個更好的方法嗎

感謝您報告此消息,您說對了,它應該可以正常工作。 存在一個已知問題,其中ASA ServiceBus輸出JSON被包裝在XML標頭中。 它將在不久的將來得到解決,但不能指定特定的日期。 在此之前,您能否解決它(可能使用子字符串/替換)?

歡呼,車丹

很抱歉拖延時間,現在已解決此問題。 它在新的兼容性級別(1.1)下公開,以避免破壞現有解決方案。 請使用此URL將您的作業配置為兼容級別1.1,然后嘗試一下。

干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM