1. 程式人生 > >MULE HTTP接收JSON資料注意事項&解析JSON字串

MULE HTTP接收JSON資料注意事項&解析JSON字串

一般來說,當使用POST方法傳遞JSON資料到HTTP元件後,此時如果放置一個Logger元件,會發現經過HTTP元件後,payload的型別實際是org.glassfish.grizzly.utils.BufferInputStream,因為經過HTTP後將負載變為了流的形式了。
如果需要還原為JSON格式字串,方法有兩個:
(1)在HTTP元件後,使用Object to String元件將payload轉為String,最簡單的方法。
(2)使用MEL表示式#[message.payloadAs(java.lang.String)]
(3)java中可以繼承AbstractMessageTransformer

,然後通過MuleMessage類的getPayloadAsString()方法。

如果你需要在java元件裡面解析JSON字串,那麼可以使用org.json.simple裡面的類來解析,這個jar包Mule裡面已經引入,因此可以直接使用,程式碼如下:

    /**
     * 將JSON字串轉為org.json.simple.JSONObject
     * @param jsonStr JSON字串
     * @return JOSNObject物件
     * @throws ParseException
     */
    public JSONObject convertSting2JSONObject
(String jsonStr) throws ParseException { JSONParser parser = new JSONParser(); JSONObject object = (JSONObject) parser.parse(jsonStr); return object; }

但是上面的程式碼只支援JSON物件,如果JSON字串是陣列,則會出現型別轉換錯誤