1. 程式人生 > >遠端RMI呼叫介面時傳JSON型別引數失敗的解決辦法

遠端RMI呼叫介面時傳JSON型別引數失敗的解決辦法

一般情況下,遠端呼叫介面時傳的引數型別必須是經過序列化之後的類, 因為資料要在網路間傳輸,需要進行序列化,所以一般需要在介面間傳遞的物件都要實現Serializable介面,一些常用的String,int,long這些資料型別基本上都沒有問題,不過在傳json字串的時候有時候就會報下面這個錯誤:

java.io.NotSerializableException: net.sf.json.JSONObject

這是因為json的依賴jar包的問題,有的低版本的jar包可能沒有經過序列化處理導致出錯,可以在程式中進行如下操作:

String resultJSON = "1234567";
JSONObject obj = (JSONObject.fromObject(resultJSON));

然後再把這個處理好的obj作為引數傳入介面就好了。如果這樣還不行的話,看看你的jar包是否版本太低或者有重複的jar包也會導致這種異常,比如專案中加入了兩個不同版本的json依賴包,如下所示:


這樣的話就把低版本的那個刪除掉就可以了。

注意:傳輸實體類引數的時候,也要注意序列化的問題,每一個實體類都要實現Serializable介面。