org.json.jsonarray到mulesoft中的有效负载

pw9qyyiw  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(764)

我正在使用一个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
    }
}
hxzsmxv2

hxzsmxv21#

我想你明白了 org.json.JSONArray 因为它实现了 Iterable<Object> 但是,它并不特别了解json节点。对于dataweave application/json 是包含json的“文本”表示的字符串或流。使用java对象作为实现来表示json的第三方库不会被理解为json,而且它不是json的正确用法 application/json mime类型。
您应该将生成的json数组序列化回文本文档,用作转换处理器的输入。
或者,您可以将json结构转换为纯java对象(pojo),作为 application/java . 这应该更有效,因为它避免了转换为json并再次解析它。

相关问题