<PRODUCT_HOME>/repository/conf/axis2/axis2.xml
<!--JSON Message Formatters--> <messageFormatter class="org.apache.synapse.commons.json.JsonStreamFormatter" contentType="application/json"/>
<!--JSON Message Builders--> <messageBuilder class="org.apache.synapse.commons.json.JsonStreamBuilder" contentType="application/json"/>
package com; import org.apache.synapse.MessageContext; import org.apache.synapse.mediators.AbstractMediator; public class MyTest extends AbstractMediator{ @Override public boolean mediate(MessageContext context) { // TODO 自动生成的方法存根 System.out.println("接收到的数据:" + (String) context.getProperty("mdmdata")); String jsonArray = (String) context.getProperty("datainfo"); System.out.println("datainfo: " + jsonArray); String puuid = (String) context.getProperty("puuid"); System.out.println("puuid: " + puuid); //在上下文设置属性 context.setProperty("args", jsonArray); context.setProperty("args2", puuid); return true; } }
format 里面设置返回报文的 JSON 格式
获取请求里的报文(使用 JSONPath ):$.A.B.C.D
<?xml version="1.0" encoding="UTF-8"?> <api context="/test2" name="test" xmlns="http://ws.apache.org/ns/synapse"> <resource methods="POST GET"> <inSequence> <property expression="json-eval($.)" name="mdmdata" scope="default" type="STRING"/> <property expression="json-eval($.ESB.DATA.DATAINFOS.DATAINFO)" name="datainfo" scope="default" type="STRING"/> <property expression="json-eval($.ESB.DATA.DATAINFOS.PUUID)" name="puuid" scope="default" type="STRING"/> <class description="" name="com.MyTest"/> <payloadFactory media-type="json"> <format>{ "esb": { "args1" : $1, "args2" : "$2", "args3" : "$3", } }</format> <args> <!--第一个参数表示$1,第二个是$2,以此类推--> <!--这里的表达式获取的是这个请求里的报文,不是Class Mediator返回的属性--> <arg evaluator="json" expression="$.ESB.DATA.DATAINFOS.DATAINFO"/> <!--这里的表达式获取的是这个请求里的报文,不是Class Mediator返回的属性--> <arg evaluator="json" expression="$.ESB.DATA.DATAINFOS.PUUID"/> <!--通过xml获取上下文的属性--> <arg evaluator="xml" expression="get-property('args2')"/> </args> </payloadFactory> <respond description=""/> </inSequence> <outSequence/> <faultSequence/> </resource> </api>
format 里面设置返回报文的 JSON 格式
获取上下文里的属性使用的表达式为:$ctx:变量名
<?xml version="1.0" encoding="UTF-8"?> <api context="/test2" name="test" xmlns="http://ws.apache.org/ns/synapse"> <resource methods="POST GET"> <inSequence> <property expression="json-eval($.)" name="mdmdata" scope="default" type="STRING"/> <property expression="json-eval($.ESB.DATA.DATAINFOS.DATAINFO)" name="datainfo" scope="default" type="STRING"/> <property expression="json-eval($.ESB.DATA.DATAINFOS.PUUID)" name="puuid" scope="default" type="STRING"/> <class description="" name="com.MyTest"/> <payloadFactory media-type="json"> <!--这里是根据属性名获取上下文的属性,不需要配置args--> <format>{ "esb": { "args1" : $ctx:args, "args2" : "$ctx:args2" } }</format> </payloadFactory> <respond description=""/> </inSequence> <outSequence/> <faultSequence/> </resource> </api>
package com; import org.apache.synapse.MessageContext; import org.apache.synapse.mediators.AbstractMediator; public class MyTest extends AbstractMediator{ @Override public boolean mediate(MessageContext context) { // TODO 自动生成的方法存根 System.out.println("接收到的数据:" + (String) context.getProperty("mdmdata")); String jsonArray = (String) context.getProperty("datainfo"); System.out.println("datainfo: " + jsonArray); String puuid = (String) context.getProperty("puuid"); System.out.println("puuid: " + puuid); //在上下文设置属性 context.setProperty("args", jsonArray); context.setProperty("args2", puuid); return true; } }
format 里面设置返回报文的 XML 格式
获取请求里的报文(使用 Path )://A//B//C/D
<?xml version="1.0" encoding="UTF-8"?> <api context="/test2" name="test" xmlns="http://ws.apache.org/ns/synapse"> <resource methods="POST GET"> <inSequence> <property expression="//ESB" name="mdmdata" scope="default" type="STRING"/> <property expression="//ESB//DATA//DATAINFOS//DATAINFO" name="datainfo" scope="default" type="STRING"/> <property expression="//ESB//DATA//DATAINFOS//PUUID" name="puuid" scope="default" type="STRING"/> <class description="" name="com.MyTest"/> <payloadFactory media-type="xml"> <format> <!-- 必须设置xmlns="",否则会使用默认的命名空间 --> <esb xmlns=""> <args1>$1</args1> <args2>$2</args2> <args3>$3</args3> </esb> </format> <args> <!--这里的表达式获取的是这个请求里的报文,不是Class Mediator返回的属性--> <arg evaluator="xml" expression="//ESB//DATA//DATAINFOS//DATAINFO"/> <!--这里的表达式获取的是这个请求里的报文,不是Class Mediator返回的属性--> <arg evaluator="xml" expression="//ESB//DATA//DATAINFOS//PUUID"/> <!--通过xml获取上下文的属性--> <arg evaluator="xml" expression="get-property('args2')"/> </args> </payloadFactory> <respond description=""/> </inSequence> <outSequence/> <faultSequence/> </resource> </api>
format 里面设置返回报文的 XML 格式
获取上下文里的属性使用的表达式为:$ctx:变量名
<?xml version="1.0" encoding="UTF-8"?> <api context="/test2" name="test" xmlns="http://ws.apache.org/ns/synapse"> <resource methods="POST GET"> <inSequence> <property expression="//ESB" name="mdmdata" scope="default" type="STRING"/> <property expression="//ESB//DATA//DATAINFOS//DATAINFO" name="datainfo" scope="default" type="STRING"/> <property expression="//ESB//DATA//DATAINFOS//PUUID" name="puuid" scope="default" type="STRING"/> <class description="" name="com.MyTest"/> <payloadFactory media-type="xml"> <format> <!--这里是根据属性名获取上下文的属性--> <!-- 必须设置xmlns="",否则会使用默认的命名空间 --> <esb xmlns=""> <args1>$ctx:args</args1> <args2>$ctx:args2</args2> </esb> </format> </payloadFactory> <respond description=""/> </inSequence> <outSequence/> <faultSequence/> </resource> </api>
{ "ESB": { "DATA": { "DATAINFOS": { "PUUID": "0XTSI9002B91F0129511374CM074R19U", "DATAINFO": [ { "Abbreviation": "深圳润园四季餐饮有限公司", "CityCode": "440300", "CooperationStatus": "合作中", "TpmMainCategory": "辅食", "Address": "天安社区车公庙泰然七路1号博今商务广场三层03号商铺", "Customer": "深圳润园四季餐饮有限公司cesAA", "TpmKeyCustomer": "", "SendSystemName": "ERP,TPM,SFA", "SfaId": "8941778068727647925", "TaxPayerType": "一般纳税人", "PaymentTerms": "EOM45", "IsKeyCustomer": "否", "BusinessCorporation": "黄日高--测试&φ", "InvoiceBankAccount": "381626368", "InvoiceMobile": "36176767", "MarketingDepartment": "PRC Offline Sales", "InvoiceBankName": "测试20221014", "Credit": "30", "CertificateNumber": "914403005571835420", "InvoiceSubBankName": "测试20221014", "CountryCode": "CN", "SFASalesPath": "全部,PRC Offline South,粤东,深圳市", "MarketingType": "母婴-单店", "ChargePerson": "Andy Liu(刘平)", "InvoiceTaxNumber": "636772617", "CATEGORYCODE": "00", "MULTICODE": { "VALUELIST": [ { "PaymentAccountCode": "30000866", "SPECIALITYCODE": "PAYMENTINFO", "LISTCODE": "5I6FT34K4U5F7P0E23NT768513Y1661U" }, { "BussinessUnit": "BU_SFPRCSH", "SPECIALITYCODE": "FINANCEINFO", "LISTCODE": "43359CW4X0NMA89R88H46W66888SB2B8" }, { "ContactMobile": "17365452345", "IsPrimaryContact": "是", "SfaContactId": "9173566440704169777", "SPECIALITYCODE": "CONTACTINFO", "LISTCODE": "VE244A9Y3FNUWN7K747KFU6H6L84RHI5", "ContactEMail": "22133133@qq.com", "ContactName": "李迪" }, { "ContactMobile": "17365459878", "IsPrimaryContact": "否", "SfaContactId": "6788874131617504418", "SPECIALITYCODE": "CONTACTINFO", "LISTCODE": "6WQB8MA09Z4776I430SJPC2TU6K93UU4", "ContactEMail": "2233133@qq.com", "ContactName": "吴繁荣" }, { "SiteContactName": "刘三", "SiteAddress": "测试77777", "SfaSiteId": "8480089929551622116", "SPECIALITYCODE": "SITEINFO", "SiteCityCode": "110000", "LISTCODE": "WAHVUTQXQP7S0GQ36Z562W0S9OZ3QYEG", "SiteContactMobile": "21878128337" }, { "SiteContactName": "刘飒", "SiteAddress": "测试00333003", "SfaSiteId": "7037924554341270073", "SPECIALITYCODE": "SITEINFO", "SiteCityCode": "330300", "LISTCODE": "8Y2PT3L762Y3IRBP9Y3FSHX90320997H", "SiteContactMobile": "15876542345" } ] }, "FILES": [ { "STOREPATH": "https://image.waiqin365.com/6055786081413437802/cm/202210/ea56e72f4c2249ad8dc732517b36a634.jpg", "FILETYPE": "image/jpg", "FILENAME": "营业执照.jpg" }, { "STOREPATH": "https://image.waiqin365.com/6055786081413437802/cm/202301/59d94e4583cf42d2aa321694c8f5f483.jpg", "FILETYPE": "image/jpg", "FILENAME": "开票资料(图片).jpg" } ], "CustomerType": "真实客户", "InvoiceType": "增值税专用发票", "TpmChannelType": "Offline-GT", "CODE": "10001267", "InvoiceAddress": "测试20221014", "TaxClassificationCode": "CN VAT OUT 13", "Country": "中国", "FromDate": "2022-10-14", "SourceSystem": "SFA", "InvoiceName": "测试20221014" } ] } } } }
<ESB> <DATA> <DATAINFOS> <PUUID>0XTSI9002B91F0129511374CM074R19U</PUUID> <DATAINFO> <Abbreviation>深圳润园四季餐饮有限公司</Abbreviation> <CityCode>440300</CityCode> <CooperationStatus>合作中</CooperationStatus> <TpmMainCategory>辅食</TpmMainCategory> <Address>天安社区车公庙泰然七路1号博今商务广场三层03号商铺</Address> <Customer>深圳润园四季餐饮有限公司cesAA</Customer> <TpmKeyCustomer></TpmKeyCustomer> <SendSystemName>ERP,TPM,SFA</SendSystemName> <SfaId>8941778068727647925</SfaId> <TaxPayerType>一般纳税人</TaxPayerType> <PaymentTerms>EOM45</PaymentTerms> <IsKeyCustomer>否</IsKeyCustomer> <BusinessCorporation>黄日高--测试&φ</BusinessCorporation> <InvoiceBankAccount>381626368</InvoiceBankAccount> <InvoiceMobile>36176767</InvoiceMobile> <MarketingDepartment>PRC Offline Sales</MarketingDepartment> <InvoiceBankName>测试20221014</InvoiceBankName> <Credit>30</Credit> <CertificateNumber>914403005571835420</CertificateNumber> <InvoiceSubBankName>测试20221014</InvoiceSubBankName> <CountryCode>CN</CountryCode> <SFASalesPath>全部,PRC Offline South,粤东,深圳市</SFASalesPath> <MarketingType>母婴-单店</MarketingType> <ChargePerson>Andy Liu(刘平)</ChargePerson> <InvoiceTaxNumber>636772617</InvoiceTaxNumber> <CATEGORYCODE>00</CATEGORYCODE> <MULTICODE> <VALUELIST> <PaymentAccountCode>30000866</PaymentAccountCode> <SPECIALITYCODE>PAYMENTINFO</SPECIALITYCODE> <LISTCODE>5I6FT34K4U5F7P0E23NT768513Y1661U</LISTCODE> </VALUELIST> <VALUELIST> <BussinessUnit>BU_SFPRCSH</BussinessUnit> <SPECIALITYCODE>FINANCEINFO</SPECIALITYCODE> <LISTCODE>43359CW4X0NMA89R88H46W66888SB2B8</LISTCODE> </VALUELIST> <VALUELIST> <ContactMobile>17365452345</ContactMobile> <IsPrimaryContact>是</IsPrimaryContact> <SfaContactId>9173566440704169777</SfaContactId> <SPECIALITYCODE>CONTACTINFO</SPECIALITYCODE> <LISTCODE>VE244A9Y3FNUWN7K747KFU6H6L84RHI5</LISTCODE> <ContactEMail>22133133@qq.com</ContactEMail> <ContactName>李迪</ContactName> </VALUELIST> <VALUELIST> <ContactMobile>17365459878</ContactMobile> <IsPrimaryContact>否</IsPrimaryContact> <SfaContactId>6788874131617504418</SfaContactId> <SPECIALITYCODE>CONTACTINFO</SPECIALITYCODE> <LISTCODE>6WQB8MA09Z4776I430SJPC2TU6K93UU4</LISTCODE> <ContactEMail>2233133@qq.com</ContactEMail> <ContactName>吴繁荣</ContactName> </VALUELIST> <VALUELIST> <SiteContactName>刘三</SiteContactName> <SiteAddress>测试77777</SiteAddress> <SfaSiteId>8480089929551622116</SfaSiteId> <SPECIALITYCODE>SITEINFO</SPECIALITYCODE> <SiteCityCode>110000</SiteCityCode> <LISTCODE>WAHVUTQXQP7S0GQ36Z562W0S9OZ3QYEG</LISTCODE> <SiteContactMobile>21878128337</SiteContactMobile> </VALUELIST> <VALUELIST> <SiteContactName>刘飒</SiteContactName> <SiteAddress>测试00333003</SiteAddress> <SfaSiteId>7037924554341270073</SfaSiteId> <SPECIALITYCODE>SITEINFO</SPECIALITYCODE> <SiteCityCode>330300</SiteCityCode> <LISTCODE>8Y2PT3L762Y3IRBP9Y3FSHX90320997H</LISTCODE> <SiteContactMobile>15876542345</SiteContactMobile> </VALUELIST> </MULTICODE> <FILES> <STOREPATH>https://image.waiqin365.com/6055786081413437802/cm/202210/ea56e72f4c2249ad8dc732517b36a634.jpg</STOREPATH> <FILETYPE>image/jpg</FILETYPE> <FILENAME>营业执照.jpg</FILENAME> </FILES> <FILES> <STOREPATH>https://image.waiqin365.com/6055786081413437802/cm/202301/59d94e4583cf42d2aa321694c8f5f483.jpg</STOREPATH> <FILETYPE>image/jpg</FILETYPE> <FILENAME>开票资料(图片).jpg</FILENAME> </FILES> <CustomerType>真实客户</CustomerType> <InvoiceType>增值税专用发票</InvoiceType> <TpmChannelType>Offline-GT</TpmChannelType> <CODE>10001267</CODE> <InvoiceAddress>测试20221014</InvoiceAddress> <TaxClassificationCode>CN VAT OUT 13</TaxClassificationCode> <Country>中国</Country> <FromDate>2022-10-14</FromDate> <SourceSystem>SFA</SourceSystem> <InvoiceName>测试20221014</InvoiceName> </DATAINFO> </DATAINFOS> </DATA> </ESB>