如何在Android API < 26 / Java 7中使用Gson反序列化YearMonth?



我当前有一个响应:

[
  "2017-12",
  "2018-01",
  "2018-02",
  "2018-03"
]

应该转换为YearMonth。但是由于Android在API 26之前不支持YearMonth,所以我不能在我的应用中使用它。

我不需要YearMonth具有的任何精美功能。我想要的只是从/到 String de/serialize的能力。我该如何实现?

我目前正在使用Gson

基本上您应该删除/序列化 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问题。

最新更新