我正在使用一个java类来转换mule应用程序中的数据结构。在我的流程结束时,我想访问结果并将其作为 application/json
.
调试时,我得到有效负载的以下值:
转换组件识别类型为的有效负载 org.json.JSONArray
. 在它下面是一个变量 myArrayList
,我没有分配它来保存所有值。
java中的getnodes()方法如下所示:
public JSONArray getNodes() {
JSONArray arr = new JSONArray();
for(Node node : nodes) {
arr.put(node.getJSON());
}
return arr;
}
返回值正确的地方。
我尝试将调用组件的mime类型设置为 application/json
或者 text/plain
,这两个都导致了错误。
我试着把有效载荷 output application/json---payload
这导致了一个空对象数组的大小与我的返回值相同。
当我看手表时,我通过访问 payload.myArrayList
,但似乎无法获取转换组件中的值。
水流是这样的。
如何返回json JSONArray
在mulesoft?
编辑:解决方案:
public Node[] getNodes() {
assignParentIds();
assignNextIds();
assignChildIds();
Node[] nodeArr = new Node[nodes.size()];
for(int i = 0; i < nodes.size(); i++) {
nodeArr[i] = nodes.get(i);
}
return nodeArr;
}
%dw 2.0
output application/json
---
{
hierarchieSet: payload map ( item , index ) -> {
zshop: item.zshop,
nodeid: item.nodeid,
nodename: item.nodename,
tlevel: item.tlevel,
parentid: item.parentid,
childid: item.childid,
nextid: item.nextid
}
}
1条答案
按热度按时间hxzsmxv21#
我想你明白了
org.json.JSONArray
因为它实现了Iterable<Object>
但是,它并不特别了解json节点。对于dataweaveapplication/json
是包含json的“文本”表示的字符串或流。使用java对象作为实现来表示json的第三方库不会被理解为json,而且它不是json的正确用法application/json
mime类型。您应该将生成的json数组序列化回文本文档,用作转换处理器的输入。
或者,您可以将json结构转换为纯java对象(pojo),作为
application/java
. 这应该更有效,因为它避免了转换为json并再次解析它。