1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/HarmonyOS-tpc-LoganSquare

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
TypeConverters.md 3.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 00:20 3e4b688

##Поддержка типов

###Типы с встроенной поддержкой

По умолчанию в LoganSquare поддерживаются следующие типы:

  • Любой объект, использующий аннотацию @JsonObject.
  • int и Integer.
  • long и Long.
  • float и Float.
  • double и Double.
  • boolean и Boolean.
  • String.
  • Date (если отформатирован с использованием стандарта ISO 8601: yyyy-MM-dd'T'HH:mm:ss.SSSZ).

Кроме того, поддерживаются следующие коллекции:

  • Списки:
    • ArrayList.
    • LinkedList.
  • Наборы:
    • HashSet.
  • Очереди:
    • ArrayDeque.
  • Декей:
    • ArrayDeque.
  • Карты (с ключами в виде строк):
    • HashMap.
    • TreeMap.
    • LinkedHashMap.
  • Массив (технически не коллекция, но всё ещё поддерживается. Обратите внимание, что списки предпочтительнее массивов, когда это возможно).

###Поддержка дополнительных типов

Любой объект Java может быть поддержан LoganSquare, даже если он не попадает в вышеуказанные категории. Чтобы добавить поддержку для собственных типов, вам потребуется расширить один из встроенных классов TypeConverter. Вы можете зарегистрировать свои пользовательские преобразователи типов одним из следующих способов:

Для глобальных TypeConverters (используются во многих местах)

LoganSquare.registerTypeConverter(Date.class, new YourConverter());

####Для TypeConverters, которые должны использоваться только для определённых переменных

Подсказка: этот метод особенно полезен для обработки нескольких форматов даты!

@JsonObject
public class ModelObject {
    @JsonField(typeConverter = YourConverter.class)
    public Date speciallyConvertedDate;
}

###Примеры TypeConverter

####TypeConverter для пользовательского формата даты

public class TimeOnlyDateConverter extends DateTypeConverter {

    private DateFormat mDateFormat;

    public TimeOnlyDateConverter() {
        mDateFormat = new SimpleDateFormat("HH:mm");
    }

    public DateFormat getDateFormat() {
        return mDateFormat;
    }

}

####TypeConverter для enum, где JSON содержит int

public enum TestEnum {
    VALUE_1, VALUE_2, VALUE_3
}
    
public class IntBasedTypeConverter<TestEnum> extends TypeConverter {
    @Override
    public TestEnum getFromInt(int i) {
        return TestEnum.values()[i];
    }
    
    public int convertToInt(TestEnum object) {
        return Arrays.asList(TestEnum.values()).indexOf(TestEnum.VALUE_1);
    }

}

####TypeConverter для enum, где JSON содержит String

public enum TestEnum {
    VALUE_1, VALUE_2, VALUE_3
}

public class EnumConverter extends StringBasedTypeConverter<TestEnum> {
    @Override
    public TestEnum getFromString(String s) {
        TestEnum.valueOf(s);
    }
    
    public String convertToString(TestEnum object) {
        return object.toString();
    }

}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/HarmonyOS-tpc-LoganSquare.git
git@api.gitlife.ru:oschina-mirror/HarmonyOS-tpc-LoganSquare.git
oschina-mirror
HarmonyOS-tpc-LoganSquare
HarmonyOS-tpc-LoganSquare
master