将SQL存储过程ResultSet表JSON转换为XML

pgcan

这看起来很明显,但不知怎么对我不起作用。我正在尝试在Microsoft Azure上的Logic App中构建解决方案,但仍无法将JSON对象转换为XML。

我的要求是执行存储过程,并将响应保存为XML格式。默认情况下,SQL Execute存储过程操作以以下JSON格式返回响应,

    {
"OutputParameters": { },
"ReturnCode": 0,
"ResultSets": {
"Table1": [
      {
        "ProductID": 680,
        "Name": "HL Road Frame - Black, 58",
        "ProductNumber": "FR-R92B-58",
        "Color": "Black",
        "StandardCost": 1059.31,
        "ListPrice": 1431.5,
        "Size": "58",
        "Weight": 1016.04
      },
      {
        "ProductID": 706,
        "Name": "HL Road Frame - Red, 58",
        "ProductNumber": "FR-R92R-58",
        "Color": "Red",
        "StandardCost": 1059.31,
        "ListPrice": 1431.5,
        "Size": "58",
        "Weight": 1016.04
      }]
 }
}

然后,在“创建Blob”操作中使用以上响应,以将响应保存在Azure上的Blob中。

链接表示逻辑应用程序提供了xml函数,用于将字符串或JSON对象转换为XML,但这似乎无法正常工作。我尝试了以下表达式,但没有任何效果,

  1. @xml(body('Execute_stored_procedure')?['ResultSets'])

错误:模板语言功能'xml'参数无效。提供的值不能转换为XML:“此文档已具有'DocumentElement'节点。”。有关用法的详细信息,请参见https://aka.ms/logicexpressions#xml

  1. @xml(body('Execute_stored_procedure')?['ResultSets'] ['Table1'])

错误:模板语言函数“ xml”期望其参数为字符串或对象。提供的值是“数组”类型。有关用法的详细信息,请参见https://aka.ms/logicexpressions#xml

我想要的就是将此JSON转换为如下所示的XML,

<Root><Product>....</Product><Product>....</Product></Root>

替代解决方案可能是调用Azure函数,然后使用c#代码将此JSON转换为XML。但是在尝试替代解决方案之前,我想知道我在做什么错。

pgcan

发布问题后,我进一步分析了问题,发现我在@xml函数中传递了错误的JSON对象。

正确的JSON对象应如下所示,

{
"ResultSets": {
"Table1": [
      {
        "ProductID": 680,
        "Name": "HL Road Frame - Black, 58",
        "ProductNumber": "FR-R92B-58",
        "Color": "Black",
        "StandardCost": 1059.31,
        "ListPrice": 1431.5,
        "Size": "58",
        "Weight": 1016.04
      },
      {
        "ProductID": 706,
        "Name": "HL Road Frame - Red, 58",
        "ProductNumber": "FR-R92R-58",
        "Color": "Red",
        "StandardCost": 1059.31,
        "ListPrice": 1431.5,
        "Size": "58",
        "Weight": 1016.04
      }]
 }
}

请注意,我必须将以下各行删除,

"OutputParameters": { },
"ReturnCode": 0,

因此尝试使用下面的表达式,它起作用了,

@xml(json(concat('{\"ResultSets\":',body('Execute_stored_procedure').ResultSets,'}')))

现在,我需要稍微调整一下此表达式以获取最终的XML。希望这对某人有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章