簡體   English   中英

wso2中xml到json的轉換

[英]xml to json conversion in wso2

當我嘗試在 wso2 中使用 XSLT 中介器將 XML 轉換為 Json 時,我收到“無法將有效負載寫入為 JSON”。 錯誤。 誰能幫我解決這個問題。

提前致謝

為什么不使用有效載荷工廠? 這是將 xml 轉換為 Json 的最佳方式。

例如:

<payloadFactory media-type="json">
    <format>{ "error": "0", "message": "$1", "data": $2 }</format>
        <args>
            <arg evaluator="json" expression="$.USER.description"/>
            <arg evaluator="json" expression="$.USER"/>
        </args>
</payloadFactory>
<property name="ContentType" value="application/json" scope="axis2"/>

或使用此屬性發送消息:

<property name="messageType" value="application/json" scope="axis2"/>

media-type 屬性指定是將消息格式化為 XML 還是 JSON。 在這個例子中,我使用 JSON 來轉換這個 xml:

<USER>
    <description>some Notes</description>
    <others></others>
</USER>

和 ESB 結果:

{
    "error" : "0",
    "message" : "Some notes",
    "data"  : {
        "description" : "Some notes",
        "others" : ""
    }
}

有關有效載荷工廠的更多信息,請參閱此鏈接: https : //docs.wso2.com/display/ESB490/PayloadFactory+Mediator

更新:

您必須使用 switch case 或 filter mediator。 例如,這是一個開關案例示例。 你必須完成正則表達式:

 <switch source="//body">
        <case regex="">
           <payloadFactory media-type="json">

           </payloadFactory>
        </case>
 </switch>

或者你可以使用過濾器。 在此示例中,過濾器匹配您給定的正則表達式或 XPath。 如果此評估返回 true,它將發送真正的 json。 如果評估返回 false,它將返回空的 json。

<filter (source="[XPath|json-eval(JSONPath)]" regex="string") | xpath="[XPath|json-eval(JSONPath)]">
    <then>
        <payloadFactory media-type="json">
            <format>{josn:"body"}</format>
            <args>your args<args/>
        </payloadFactory>
    </then>
    <else>
        <payloadFactory media-type="json">
            <format>{}</format>
            <args/>
        </payloadFactory>
    </else>
</filter>

此鏈接應該可以幫助您: https : //docs.wso2.com/display/ESB490/Filter+Mediator

如果您嘗試將soap服務轉換為rest,您可以通過將消息類型指定為(在rest api中)來實現:

 <property name="messageType" value="application/json" scope="axis2"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM