我有低于数据库输出,我如何拆分它。
[{country=United States, accountID=4410, street=12345 Green Rd, state=Colorado, name=Dale Burgers, city=Boulder, postal=80305}, {country=United Kingdom, accountID=4411, street=capthorne Avenue, state=Harrow, name=Arjun, city=london, postal=ha29eb}, {country=usa, accountID=4412, street=elden st, state=va, name=Home Foods, city=herndon, postal=20170}, {country=usa, accountID=4413, street=herndon parkway, state=va, name=Home Foods 2, city=herndon, postal=20170}, {country=usa, accountID=4414, street=van barun st, state=va, name=home foods 3, city=herndon, postal=20170}, {country=United Kingdom, accountID=4415, street=355 E Capthorne Court, Alexandra Avenue, state=Harrow, name=Barkha , city=Haarow London, postal=ha29eb}, {country=Canada, accountID=4416, street=4130 Chromoly, state=BC, name=Spawn Cycles, city=Squamish, postal=L0L0L0}, {country=Canada, accountID=4417, street=1 Yonge Street, state=BC, name=Post Spawn, city=Vancouver, postal=L1L1L1}, {country=Canada, accountID=4418, street=1 Yonge Street, state=BC, name=Post Post Spawn, city=Vancouver, postal=L2L2L2}, {country=Canada, accountID=4419, street=1 Yonge Street, state=BC, name=Post Post Post Spawn, city=Vancouver, postal=L0L0L0}]
我尝试将JSON添加到Object Transformer,形成List类型和Collection splitter,但只传递了第一条记录。
{country=United States, accountID=4410, street=12345 Green Rd, state=Colorado, name=Dale Burgers, city=Boulder, postal=80305}
最简单的方法是使用json将json转换为java对象到对象转换器,它应该为您提供一组对象。然后,您可以使用Mule中的foreach处理器循环访问此集合。
希望这有帮助。
数据库连接器以java.util.LinkedList
格式返回值,如果要将结果按记录分割,则在数据库轮询组件之后使用For-each范围。请在下面找到示例代码段:
<db:mysql-config name="MySQL_Configuration" host="hostname" port="3306" user="mule" password="welcome1" database="schema" doc:name="MySQL Configuration"/>
<flow name="database-47729955Flow">
<poll doc:name="Poll">
<fixed-frequency-scheduler frequency="10" timeUnit="SECONDS"/>
<db:select config-ref="MySQL_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[SELECT * FROM schema.table_name where B2B_REQUEST_TYPE='Send';]]></db:parameterized-query>
</db:select>
</poll>
<foreach doc:name="For Each">
<logger message="#['\n Database record is:'+payload]" level="INFO" doc:name="Logger"/>
<logger message="#['\nNext record']" level="INFO" doc:name="Logger"/>
</foreach>
</flow>
问候,
斯里尼瓦斯B.
数据库输出应仅为List或Iterator。但是如果你得到JSON。您可以通过以下方式实现它
使用将返回List的Dataweave-
%dw 1.0
%output application/java
---
payload
使用将返回Dataweave MEL function的Iterator (SplitIterator)
-
<set-payload value="#[split('payload','application/json')]" doc:name="Set Payload"/>
使用JSON对象变换器 -
<json:json-to-object-transformer returnClass="java.util.List" doc:name="JSON to Object"/>
希望这可以帮助。