0

在 WSO2 ESB 中,更改某些属性可以将 messageType 从 XML 更改为 JSON,最简单的方法是什么,甚至不关心格式、标签等,这里有一个示例:

string SfID = xmls:getString(soapResponse, "/*:queryResponse/*:result/*:records/*:Id/text()" );
string Sfusername = xmls:getString(soapResponse, "/*:queryResponse/*:result/*:records/*:Name/text()" );

json jsPayload = `{"SFUser":
                   {"Sfusername":"Sfusername" ,
                   "SfID":"SfID"}
                  }`;

jsons:set(jsPayload,"$.SFUser.SfID" , SfID);
jsons:set(jsPayload,"$.SFUser.Sfusername" , Sfusername);

message response = {};

messages:setJsonPayload(response,jsPayload);

我希望 SOAPXMLResponse 中的任何响应都使用相同的标签转换为 JSON。

任何想法?

4

1 回答 1

2

从同事那里得到答案:

这是示例(Salesforce 执行):

@http:GET{}
    @http:Path {value:"/execute"}
    resource querySalesForceWithParams(message m ) {
        xml queryOptions = `<urn:QueryOptions xmlns:urn="urn:partner.soap.sforce.com"><urn:batchSize>200</urn:batchSize></urn:QueryOptions>`;
        headers = [queryOptions];
        soapResponse = salesforcesoap:ClientConnector.query(sales, headers, "Select c.Reason, c.IsClosed, c.Id, c.Description, c.CreatedDate From Case c");
        system:println(xmls:toString(soapResponse));

        message response = {};

        json jsonPayload = (json) soapResponse;

        messages:setJsonPayload(response,jsonPayload);    

        reply response;

    }
于 2017-05-27T23:27:41.847 回答