2017-05-25 51 views
0

这看起来很明显,但不知何故它不适合我。我试图在Microsoft Azure上的Logic App中构建解决方案,但我坚持将JSON对象转换为XML。Azure Logic App - JSON到XML的转换

我的要求是执行一个存储过程并以XML格式保存响应。默认情况下,SQL执行存储过程的行动返回响应以下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上的斑点响应。

link说,逻辑应用程序提供XML函数的字符串或JSON对象转换为XML,但这似乎预计将无法正常工作。我想下面的表达,但没有任何工程,

  1. @xml(体( 'Execute_stored_procedure') '结果集'])

错误:模板语言功能 'XML' 参数无效。提供的值不能转换为XML:'此文档已经有'DocumentElement'节点。'。有关使用详情,请参阅https://aka.ms/logicexpressions#xml

  • @xml(体( 'Execute_stored_procedure')[ '的ResultSets'] [ '表1']?)
  • ERROR:模板语言功能 'XML' 预计它的参数是一个字符串或一个对象。提供的值是'Array'类型。有关使用详情,请参阅https://aka.ms/logicexpressions#xml

    我要的就是这个JSON转换为XML像下面,

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

    的替代解决方案,可以调用Azure的功能,这JSON转换成XML在C#代码。但在我尝试替代解决方案之前,我想知道我做错了什么。

    回答

    1

    发布问题后,我进一步分析问题,发现我传递错误的JSON对象@xml功能。

    正确的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。希望这可以帮助某人。