Я пробовал этот код для сериализации / десериализации json в gson и наоборот
public class BooleanSerializer implements JsonSerializer<Boolean>, JsonDeserializer<Boolean> {
@Override
public JsonElement serialize(Boolean src, Type typeOfSrc, JsonSerializationContext context) {
return new JsonPrimitive(src?"Y":"N");
}
@Override
public Boolean deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
return json.toString().equalsIgnoreCase("Y");
}
}
И использовал этот класс следующим образом
BooleanSerializer booleanSerializer = new BooleanSerializer();
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Boolean.class, booleanSerializer);
gsonBuilder.registerTypeAdapter(Boolean.class, booleanSerializer);
Gson gson = gsonBuilder.create();
Event event = gson.fromJson(eventJObj.toString(), Event.class);
Класс модели похож на этот
public class Event implements Parcelable {
private long eventID;
private String objective;
private String typeOfEvent;
private Boolean isBookmarked;
private Boolean iAttended;
private Boolean isFeatured;
}
И формат json выглядит следующим образом
{
"eventID": 25,
"objective": "event",
"typeOfEvent": "conference",
"isBookmarked": "N",
"iAttended": "Y",
"isFeatured": "Y",
}
Когда я пытаюсь преобразовать вышеуказанный json в объект Event, он не смог преобразовать Y в true
, он всегда содержит значение false
.Кроме того, по какой-то причине необходимо расширить класс parcelable для Event
объекта.
Куда я иду не так?