首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mule 4:将SQL对象转换为JSON

Mule 4:将SQL对象转换为JSON
EN

Stack Overflow用户
提问于 2020-08-06 14:10:49
回答 1查看 308关注 0票数 0

我将SQLXML结果集作为从数据库执行存储过程形状调用的MS存储过程的输出。

SQLXML结果集如下所示:

代码语言:javascript
复制
<xmlcontent>
   <field1>val1</field1>
   <field2>val2</field2>
   <field3>val3</filed3>
</xmlcontent>
<xmlcontent>
   <field1>val1</field1>
   <field2>val2</field2>
   <field3>val3</filed3>
</xmlcontent>
<xmlcontent>
   <field1>val1</field1>
   <field2>val2</field2>
   <field3>val3</filed3>
</xmlcontent>

但是,有效负载有点奇怪,因为它包含长度为2033的XML输出,然后作为数组元素重复,直到有效负载耗尽为止。带有公正有效载荷的转换形状输出显示:

代码语言:javascript
复制
{
  "resultSet1": [
    {
      "XML_F52E2B61-18A1-11d1-B105-00805F49916B": "<xmlcontent><field1/><field2/><field3/>" --this content is of size 2033 max
    },
    {
      "XML_F52E2B61-18A1-11d1-B105-00805F49916B": "</xmlcontent><xmlcontent><field1/><fiel" --this content is of size 2033 max
    },
    {
      "XML_F52E2B61-18A1-11d1-B105-00805F49916B": "d2/><field3/><xmlcontent>"
    }
  ]
}

我正在考虑使用另一个转换形状从resultset1数组中追加“XMLF52E2B61-18A1-11d1-B105-00805F49916B”的值,然后转换为JSON。在数据编织中是否有一种方法可以简化这种方法,以获得最终的JSON输出,如下所示?

代码语言:javascript
复制
    [
   {
      "field1": "val1",
      "field2": "val2",
      "field3": "val3"
   },
   {
      "field1": "val1",
      "field2": "val2",
      "field3": "val3"
   },
   {
      "field1": "val1",
      "field2": "val2",
      "field3": "val3"
   }
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-09 14:41:06

输入:

代码语言:javascript
复制
{
  "resultSet1": [
    {
      "XML_F52E2B61-18A1-11d1-B105-00805F49916B": "<xmlcontent><field1>val1</field1><field2>val2</field2><field3>val3</field3>" 
    },
    {
      "XML_F52E2B61-18A1-11d1-B105-00805F49916B": "</xmlcontent><xmlcontent><field1>val1</field1><fiel" 
    },
    {
      "XML_F52E2B61-18A1-11d1-B105-00805F49916B": "d2>val2</field2><field3>val3</field3></xmlcontent>"
    }
  ]
}

剧本:

代码语言:javascript
复制
%dw 2.0
output application/json
var id='XML_F52E2B61-18A1-11d1-B105-00805F49916B'
var body=payload.resultSet1 map (
    $[id]) reduce ((item, accumulator) -> accumulator ++ item)

---
read('<root>' ++ body ++ '</root>', "application/xml").root.*xmlcontent

输出:

代码语言:javascript
复制
[
  {
    "field1": "val1",
    "field2": "val2",
    "field3": "val3"
  },
  {
    "field1": "val1",
    "field2": "val2",
    "field3": "val3"
  }
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63285433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档