android:使用@JsonAdapter将int转换为Boolean导致IllegalStateException

时间:2018-07-16 14:54:51

标签: java android gson

我正在使用gson lib和我的数据模型类,如下所示:

Class User implements Parcelable{
    @SerializedName("user_id")
    int id;

    @SerializedName("is_working")
    @JsonAdapter(BooleanTypeAdapter.class)
    boolean isWorking;

    protected User(Parcel in){
     id = in.readInt();
     isWorking = in.readByte() ! = 0;
    }
    ...  
}

Json数据包含的id为整数,例如1234,is_working也为整数(0/1)。

要将int转换为boolean,我使用了BooleanTypeAdapter类,如下所示:

public class BooleanTypeAdapter extends TypeAdapter<Boolean>{

    @Override
    public void write(JsronWriter out , Boolean value) throws IOException{
     if(value == null)
      out.nullValue();
     else
      out.value(value);
    }

    @Override
    public Boolean read(JsonReader in) throws IOException{
     JsonToken peek = in.peek();
     switch(peek){
      case BOOLEAN: 
       return in.nextBoolean();
      case NUMBER:
       return in.nextInt() > 0;
      }
    }
}

获取数据的主要代码:

ArrayList userList = gson.from(jsonResp,new TypeToken>(){}。getType());

在调试时,我注意到它本身没有输入BooleanTypeAdapter类。

请帮助我找出错误的地方。

0 个答案:

没有答案