fastjson反序列化的時候報錯

java.lang.VerifyError: 
(class: com/alibaba/fastjson/parser/deserializer/FastjsonASMDeserializer_2_類名, method: deserialze signature: 
(Lcom/alibaba/fastjson/parser/DefaultJSONParser;
Ljava/lang/reflect/Type;Ljava/lang/Object;I)Ljava/lang/Object;)
 Accessing value from uninitialized register 80
  • 項目中出現問題的fastJson jar 版本 1.2.8
  • 升級jar包版本到最新版 1.2.44 後問題解決

  • 原因: 當返序列化解析的時候
    XXX bbc= JSON.parseObject(data.get(“bbc”).toString(), XXX .class);
    XXX bbc= JSONObject.parseObject(data.get(“bbc”).toString(), XXX .class);
    反序列化的類中屬性個數正好等於32或者是64的時候就會出錯

  • 問題在1.2.29中已經修復,原因是新加防重複功能時,在字段數量爲32或者64時,計算本地變量出錯了.

  • 問題解決後找到了相關的官方文檔

  • 因爲本人在項目中遇到的屬性等於64個字段,所以測試下32 附上測試代碼

 public static void main(String[] args) throws InterruptedException, ExecutionException {
        TestClass t = JSONObject.parseObject("{" +
                "\"ceShi1\": \"1\"," +
                "\"ceShi2\": \"2\"," +
                "\"ceShi3\": \"3\"," +
                "\"ceShi4\": \"4\"," +
                "\"ceShi5\": \"5\"," +
                "\"ceShi6\": \"6\"," +
                "\"ceShi7\": \"7\"," +
                "\"ceShi8\": \"8\"," +
                "\"ceShi9\": \"9\"," +
                "\"ceShi10\": \"10\"," +
                "\"ceShi11\": \"11\"," +
                "\"ceShi12\": \"12\"," +
                "\"ceShi13\": \"13\"," +
                "\"ceShi14\": \"14\"," +
                "\"ceShi15\": \"15\"," +
                "\"ceShi16\": \"16\"," +
                "\"ceShi17\": \"17\"," +
                "\"ceShi18\": \"18\"," +
                "\"ceShi19\": \"19\"," +
                "\"ceShi20\": \"20\"," +
                "\"ceShi21\": \"21\"," +
                "\"ceShi22\": \"22\"," +
                "\"ceShi23\": \"23\"," +
                "\"ceShi24\": \"24\"," +
                "\"ceShi25\": \"25\"," +
                "\"ceShi26\": \"26\"," +
                "\"ceShi27\": \"27\"," +
                "\"ceShi28\": \"28\"," +
                "\"ceShi29\": \"29\"," +
                "\"ceShi30\": \"30\"," +
                "\"ceShi31\": \"31\"," +
                "\"ceShi32\": \"32\"" +
                "    }", TestClass.class);
    }

//實體
public class TestClass {
    private String ceShi1;
    private String ceShi2;
    private String ceShi3;
    private String ceShi4;
    private String ceShi5;
    private String ceShi6;
    private String ceShi7;
    private String ceShi8;
    private String ceShi9;
    private String ceShi10;
    private String ceShi11;
    private String ceShi12;
    private String ceShi13;
    private String ceShi14;
    private String ceShi15;
    private String ceShi16;
    private String ceShi17;
    private String ceShi18;
    private String ceShi19;
    private String ceShi20;
    private String ceShi21;
    private String ceShi22;
    private String ceShi23;
    private String ceShi24;
    private String ceShi25;
    private String ceShi26;
    private String ceShi27;
    private String ceShi28;
    private String ceShi29;
    private String ceShi30;
    private String ceShi31;
    private String ceShi32;
    private String ceShi33;
    private String ceShi34;
    private String ceShi35;
    private String ceShi36;
    private String ceShi37;
    private String ceShi38;
    private String ceShi39;
    private String ceShi40;
    private String ceShi41;
    private String ceShi42;
    private String ceShi43;
    private String ceShi44;
    private String ceShi45;
    private String ceShi46;
    private String ceShi47;
    private String ceShi48;
    private String ceShi49;
    private String ceShi50;
    private String ceShi51;
    private String ceShi52;
    private String ceShi53;
    private String ceShi54;
    private String ceShi55;
    private String ceShi56;
    private String ceShi57;
    private String ceShi58;
    private String ceShi59;
    private String ceShi60;
    private String ceShi61;
    private String ceShi62;
    private String ceShi63;
    private String ceShi64;
此處測試可以隨意添加減少實體 所以省去get set方法 測試的時候自己生成
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章