如何在 Android API < 26 / Java 7 中使用 Gson 反序列化 YearMonth?
How to de-serialize YearMonth with Gson in Android API < 26 / Java 7?
我目前的回复如下:
[
"2017-12",
"2018-01",
"2018-02",
"2018-03"
]
应转换为 YearMonth
。但是由于 Android 在 API 26 之前不支持 YearMonth
,所以我无法在我的应用程序中使用它。
我不需要 YearMonth
拥有的任何花哨功能。我想要的只是 de/-serialize from/to String
的能力。我怎样才能做到这一点?
我目前正在使用 Gson
。
基本上你应该 de-/serialize 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
问题。
我目前的回复如下:
[
"2017-12",
"2018-01",
"2018-02",
"2018-03"
]
应转换为 YearMonth
。但是由于 Android 在 API 26 之前不支持 YearMonth
,所以我无法在我的应用程序中使用它。
我不需要 YearMonth
拥有的任何花哨功能。我想要的只是 de/-serialize from/to String
的能力。我怎样才能做到这一点?
我目前正在使用 Gson
。
基本上你应该 de-/serialize 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
问题。