Azure Logic Apps .NET SDK json 工作流定义中的解析错误
Azure Logic Apps .NET SDK json parsing error in workflow definition
这是我调用 CreateOrUpdateAsync 时失败的代码块。逻辑应用程序在 Azure 中运行良好,但当我尝试使用 .NET SDK 创建它时,我遇到 JSON 解析问题。
'foreach': '@variables(""LocationData"")',
'runAfter': {
'Initialize_variable_2': [
'Succeeded'
]
}
这是错误信息。
{“模板验证失败:'第 1 行和第 263 列的模板操作 'For_each' 无效:\”模板语言表达式 'variables(\"LocationData\")' 无效:位置 '10' 处的字符串字符 '\"' 不是预期的。\".'."}
如果我更改为单引号,则会出现此错误。
'foreach': '@variables('LocationData')',
'runAfter': {
'Initialize_variable_2': [
'Succeeded'
]
}
{“解析值后遇到意外字符:L.路径 'actions.For_each.foreach',第 651 行,位置 40。”}
这个 JSON 格式化器和验证器也不喜欢它。
https://jsonformatter.curiousconcept.com/
有人知道这个问题以及如何解决吗?
非常感谢任何帮助!谢谢!
从我们这边复制后,这是它为我们工作的方式。
"For_each": {
"foreach": "@variables('location')",
"runAfter": {
"Initialize_variable_2": [
"Succeeded"
]
}
}
我继续创建了自己的 类 来处理工作流定义。
这是一个示例。代码很多,但效果很好。
public class LogicApp
{
public string schema { get; set; }
public Actions actions { get; set; }
public string contentVersion { get; set; }
public Outputs outputs { get; set; }
public Triggers triggers { get; set; }
}
public class Actions
{
public For_Each For_each { get; set; }
}
public class For_Each
{
public Actions actions { get; set; }
public string _foreach { get; set; }
public Runafter runAfter { get; set; }
public string type { get; set; }
}
我什至写了 类 来处理我的 ParseJson 动作。这是一个示例。
public class Parse_JSON
{
public Inputs inputs { get; set; }
public Runafter runAfter { get; set; }
public string type { get; set; }
}
然后我就这么叫了。
var logicApp = new LogicApp
{
}
最后,我创建了工作流定义 JSON 字符串。这是一个 ASP.Net 核心应用程序。
var options = new JsonSerializerOptions { WriteIndented = true };
string jsonString = ReplaceFirst(JsonSerializer.Serialize(logicApp, options), "schema", "$schema"));
我使用这种方法在第一次出现的单词 schema 中添加了一个 $。
string ReplaceFirst(string text, string search, string replace)
{
int pos = text.IndexOf(search);
if (pos < 0)
{
return text;
}
return text.Substring(0, pos) + replace + text.Substring(pos + search.Length);
}
这是我调用 CreateOrUpdateAsync 时失败的代码块。逻辑应用程序在 Azure 中运行良好,但当我尝试使用 .NET SDK 创建它时,我遇到 JSON 解析问题。
'foreach': '@variables(""LocationData"")',
'runAfter': {
'Initialize_variable_2': [
'Succeeded'
]
}
这是错误信息。
{“模板验证失败:'第 1 行和第 263 列的模板操作 'For_each' 无效:\”模板语言表达式 'variables(\"LocationData\")' 无效:位置 '10' 处的字符串字符 '\"' 不是预期的。\".'."}
如果我更改为单引号,则会出现此错误。
'foreach': '@variables('LocationData')',
'runAfter': {
'Initialize_variable_2': [
'Succeeded'
]
}
{“解析值后遇到意外字符:L.路径 'actions.For_each.foreach',第 651 行,位置 40。”}
这个 JSON 格式化器和验证器也不喜欢它。
https://jsonformatter.curiousconcept.com/
有人知道这个问题以及如何解决吗?
非常感谢任何帮助!谢谢!
从我们这边复制后,这是它为我们工作的方式。
"For_each": {
"foreach": "@variables('location')",
"runAfter": {
"Initialize_variable_2": [
"Succeeded"
]
}
}
我继续创建了自己的 类 来处理工作流定义。
这是一个示例。代码很多,但效果很好。
public class LogicApp
{
public string schema { get; set; }
public Actions actions { get; set; }
public string contentVersion { get; set; }
public Outputs outputs { get; set; }
public Triggers triggers { get; set; }
}
public class Actions
{
public For_Each For_each { get; set; }
}
public class For_Each
{
public Actions actions { get; set; }
public string _foreach { get; set; }
public Runafter runAfter { get; set; }
public string type { get; set; }
}
我什至写了 类 来处理我的 ParseJson 动作。这是一个示例。
public class Parse_JSON
{
public Inputs inputs { get; set; }
public Runafter runAfter { get; set; }
public string type { get; set; }
}
然后我就这么叫了。
var logicApp = new LogicApp
{
}
最后,我创建了工作流定义 JSON 字符串。这是一个 ASP.Net 核心应用程序。
var options = new JsonSerializerOptions { WriteIndented = true };
string jsonString = ReplaceFirst(JsonSerializer.Serialize(logicApp, options), "schema", "$schema"));
我使用这种方法在第一次出现的单词 schema 中添加了一个 $。
string ReplaceFirst(string text, string search, string replace)
{
int pos = text.IndexOf(search);
if (pos < 0)
{
return text;
}
return text.Substring(0, pos) + replace + text.Substring(pos + search.Length);
}