OkHttp网络编程和Room Attempt to invoke virtual method '..xx' on a null object reference

本文解决在使用Room数据库插入数据时遇到的NullPointerException问题,通过检查数据源和调整数据处理逻辑,特别是针对JSON数据的处理,避免了空指针异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在AS下的报错文本:
E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: com.lcj.npo, PID: 2680
java.lang.NullPointerException: Attempt to invoke virtual method ‘java.lang.String com.lcj.npo.model.DataSource.getQrid()’ on a null object reference
at com.lcj.npo.dao.DataSourceDao_Impl$1.bind(DataSourceDao_Impl.java:28)
at com.lcj.npo.dao.DataSourceDao_Impl$1.bind(DataSourceDao_Impl.java:20)
at androidx.room.EntityInsertionAdapter.insert(EntityInsertionAdapter.java:96)
at com.lcj.npo.dao.DataSourceDao_Impl.insertAll(DataSourceDao_Impl.java:72)
at com.lcj.npo.MainActivity 3. o n R e s p o n s e ( M a i n A c t i v i t y . j a v a : 165 ) a t o k h t t p 3. R e a l C a l l 3.onResponse(MainActivity.java:165) at okhttp3.RealCall 3.onResponse(MainActivity.java:165)atokhttp3.RealCallAsyncCall.run(RealCall.kt:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
I/Process: Sending signal. PID: 2680 SIG: 9

背景说明:
网络编程,json解析,解析数据存入Room中

分析:
1.空指针,到底错在哪呢,错误是在系统帮忙写的impl的实现类中,分明不可能
2.既然不可能,AS也没有编码上的问题,所以,是数据上的问题。
3.看服务器的数据
在这里插入图片描述
明明只有16679条,但是获取后是16680条,所以,很有可能是最后的那个符号 ’]‘ 的问题,因此,在获取后的数据去除最后一条。
即 :

list.remove(list.size()-1)

当然,还有其他问题,如
1.布局中的view问题:https://blog.youkuaiyun.com/TNove/article/details/78761511
2.response.body().string()只能使用一次问题:https://blog.youkuaiyun.com/u013040819/article/details/56672364

view问题:
view问题很多在于id的问题,在layout文件中能不用相同的Id就不要使用,在查错时会很痛苦,因为在开发工具上并没有语法上的错误,这中错误是人为因素,能避免就避免。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值