Как десериализовать YearMonth с Gson в Android API < 26 / Java 7?
У меня в настоящее время есть ответ как:
[
"2017-12",
"2018-01",
"2018-02",
"2018-03"
]
который должен быть преобразован в YearMonth
, Но так как Android не поддерживает YearMonth
до API 26 я не могу использовать его в своем приложении.
Мне не нужна какая-то необычная функция, которая YearMonth
есть. Все, что я хочу, это просто способность де-сериализации из / в String
, Как мне этого добиться?
Я сейчас пользуюсь Gson
,
1 ответ
Решение
В основном вы просто должны де-/ сериализовать String[]
, Смотрите ниже тестовые случаи:
@Slf4j
public class YearMonthStringTest {
public static final String json =
"[\n"
+ " \"2017-12\", \n"
+ " \"2018-01\", \n"
+ " \"2018-02\", \n"
+ " \"2018-03\" \n"
+ "]";
@Test
public void fromJsonTest() {
String[] strs = new Gson().fromJson(json, String[].class);
Arrays.asList(strs).forEach(str -> {
log.info("{}", str);
});
}
@Test
public void toJsonTest() {
String[] str = new String[] { "2001-01", "1984-02"
, "1878-11", "0000-12" };
String jsonFromArray = new GsonBuilder()
.setPrettyPrinting().create().toJson(str);
log.info("json from array:\n{}", jsonFromArray);
}
}
YearMonth
был введен в Java 8
так что это в целом Java 7
вопрос.