《Android Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $》

  • 日志错误

Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $
  • 出现的场景

1. 一种是所有接口都出现这个问题,一种是个别接口出现这个问题。

2. debug场景下能够正常使用,打正式版的包使用时只要跑接口就出现这个错误;

  • 分析

1. 百度过很多博客,大多数报的是json解析错误,使用gson解析错误。但是debug使用的时候是正常的,所以排除;

2. 也有说是传的数据由空格的原因,这个我也一一排查了。我获取的数据都 et.getText().toString().trim(); 处理过了,也排除;

3. 接口编写的问题我也查过,并没有任何问题,debug情况下是能够正常使用,所以排除;

4. 也有说是路径问题,用的是同一个路径,这个也排除;

5. 最后,唯一的不同是打包方式不一样。打包引起不一样的地方,那就只能是代码混淆的问题。出现第一条的时候排查了好久,发现混淆的代码也是没有问题,后来才发现对应这个接口的entity类,没有放到entity里面,导致混淆的时候出现无法解析的情况。修改即可使用。第二个场景是修改了包名,忘记更新混淆文件proguard-rules.pro里面的内容。

  • 解决

#---------------------------------实体类---------------------------------
##修改成你对应的包名(com.xxx.xxxx指的是包名)
 #实体类不参与混淆 com\xxx\xxxx\mvp\model\entity
-keep class com.xxx.xxxx.mvp.model.entity.** { *; }
-keep class com.jess.arms.widget.** { *; } #自定义控件不参与混淆
-keep class com.xxx.xxxx.mvp.ui.widget.** { *; } #自定义控件不参与混淆

1. 检查实体类位置是不是写对了;

2. 检查你的现在的包名是不是对得上proguard-rules.pro里面的包名。若不一样,打正式版时必然出现无法使用的情况。

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