JMeter BeanShell調用不定參數的方法

拿FastJSON下的類爲例,
JSON類裏有下面這個方法,用來做JSON字符串輸出

public abstract class JSON implements JSONStreamAware, JSONAware {

......
    public static String toJSONString(Object object, SerializerFeature... features) {
        // dosomething
    }
......
}

通過可以這樣直接調用:

String resultJSON = JSON.toJSONString(jsonObject,SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat)

這時問題來了,現在需要在JMeter裏格式化輸出JSON,也這樣寫入BeanShell

prev.setResponseData(JSON.toJSONString(jsonObject,SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat));

執行後就出錯:Not found class "com.alibaba.fastjson.JSON"。

如果不看這個錯誤以爲是沒導入JSON類,但是事實上我們已經加入了import com.alibaba.fastjson.JSON這一行,不然前面幾步用到JSON解析就無法執行。

 

解決方法:

將toJSONString需要的不定參數換成數組後傳入就完成了,修改後的BeanShell代碼如下:

SerializerFeature[] features = new SerializerFeature[3];
features[0]=SerializerFeature.PrettyFormat;
features[1]=SerializerFeature.WriteMapNullValue;
features[2]=SerializerFeature.WriteDateUseDateFormat;

prev.setResponseData(JSON.toJSONString(jsonObject, features));

修改後再執行就通過了,還可以看到輸出結果裏整齊的JSON字符串。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章