我正在尝试构建一个将数据插入Sql数据库的逻辑应用程序。数据来自s Stream Analytics作业,在服务总线主题上输出,在服务总线触发器中的逻辑应用程序中使用。
要填充所插入行的属性(假设它只有一列'名称'),我发现这应该可以使用以下语法:
"body": {
"Name": "@{json(decodeBase64(triggerBody()['ContentData'])).Name}"
},
如果邮件正文中包含“'名称'属性。
但运行此命令时出现以下错误消息:
{"代码":" InvalidTemplate","消息":"无法处理模板语言表达式' Insert_row&#39 ;输入线#1;'和专栏' 2017':'模板语言功能' 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 \":\&# 34; 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中的所有集成是否都应该可以正常工作?
谢谢, 斯蒂芬
答案 0 :(得分:3)
使用工作流定义语言中可用的有限字符串函数,我不得不使用冗长的方法来删除其他字符串
@{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}
有更好的方法吗
答案 1 :(得分:1)
感谢您报告此事,您说得对,应该只是工作。存在一个已知问题,即ASA ServiceBus输出JSON被包装在XML头中。它将在不久的将来得到解决,但不能指定具体日期。你可以解决它(可能使用子串/替换)直到那时?
欢呼声, 阿赫亚
答案 2 :(得分:1)
对于延迟回复抱歉,此问题现已修复。它在新的兼容级别(1.1)下暴露,以避免破坏现有的解决方案。请使用此URL使用compat level 1.1配置您的作业,并尝试一下。
喝彩!