【问题标题】:Automatically convert XML to JSON in Ballerina在 Ballerina 中自动将 XML 转换为 JSON
【发布时间】:2017-05-24 23:11:31
【问题描述】:

在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。

有什么想法吗?

【问题讨论】:

    标签: ballerina


    【解决方案1】:

    从同事那里得到答案:

    这是示例(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;
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-16
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 2018-08-16
      • 2013-09-20
      • 2012-02-17
      相关资源
      最近更新 更多