[alibaba/fastjson]实现Parcelable后出现default constructor not found

2025-11-03 556 views
2

Process: inteligent.jingxin.com.dyjustice, PID: 29378 com.alibaba.fastjson.JSONException: default constructor not found. class inteligent.jingxin.com.dyjustice.model.entity.ContradictionDetailBean$DataBean at com.alibaba.fastjson.parser.JavaBeanInfo.build(JavaBeanInfo.java:499) at com.alibaba.fastjson.parser.JavaBeanDeserializer.<init>(JavaBeanDeserializer.java:35) at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:229) at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:148) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:683) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:659) at com.alibaba.fastjson.JSON.parseObject(JSON.java:238) at com.alibaba.fastjson.JSON.parseObject(JSON.java:210) at com.alibaba.fastjson.JSON.parseObject(JSON.java:169) at com.alibaba.fastjson.JSON.parseObject(JSON.java:278) at inteligent.jingxin.com.dyjustice.model.network.JsonFormat.getJsonObjectFormat(JsonFormat.java:49) at inteligent.jingxin.com.dyjustice.ui.ui.fragment.contradiction.ContradictionDetailFragment$1.OnResultListener(ContradictionDetailFragment.java:132) at inteligent.jingxin.com.dyjustice.model.network.OkService$2$1.OnResultListener(OkService.java:97) at inteligent.jingxin.com.dyjustice.model.network.LoginService.ReLogin(LoginService.java:134) at inteligent.jingxin.com.dyjustice.model.network.OkService$2.onSuccess(OkService.java:92) at com.lzy.okgo.cache.policy.NoCachePolicy$1.run(NoCachePolicy.java:43) at android.os.Handler.handleCallback(Handler.java) at android.os.Handler.dispatchMessage(Handler.java) at android.os.Looper.loop(Looper.java) at android.app.ActivityThread.main(ActivityThread.java) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) at dalvik.system.NativeStart.main(Native Method)

databean已用static修饰

使用版本: 'com.alibaba:fastjson:1.1.67.android'

回答

7

加个自定义函数即可

9

ContradictionDetailBean$DataBean 我也遇到这个问题,在类里面如果还包含一个类的话,内部类需要创建一个空的构造函数,不然的话就会报这个错误 @wenshao @bwzhny 这个应该可以优化的把... 使用版本: 'com.alibaba:fastjson:1.1.67.android' Gson不会有这个问题.....不过我还是喜欢用国内的

8

DataBean的代码是怎样的?

2

import com.chad.library.adapter.base.entity.MultiItemEntity;

public class ShopBean implements Serializable { ... private List dataList; public class ItemBean implements MultiItemEntity, Serializable { } } @wenshao

9

JSON.parseObject(json, ShopBean .class)就会提示default constructor not found

1

我发现了问题所在了,我这边是在ItemBean里面创建了一个传参的构造函数,导致的default constructor not found,如果我不创建构造函数或者是多创建一个空的构造函数,都不会出现问题了

public class ItemBean implements MultiItemEntity, Serializable {
    public ItemBean (int itemType) {
            this.itemType = itemType;
        }
}

不知道这个算不算bug @wenshao

0

@sweet2o09 请问您遇到的问题解决了吗? 我这边也遇到内部类中存在有参构造方法时,会导致default constructor not found 错误日志: com.alibaba.fastjson.JSONException: default constructor not found. class java.util.Collections$UnmodifiableMap at com.alibaba.fastjson.util.JavaBeanInfo.build(JavaBeanInfo.java:467) at com.alibaba.fastjson.util.JavaBeanInfo.build(JavaBeanInfo.java:213)

3

加一个空的构造方法就好吧