【问题标题】:Choose JSON based on Day/Month根据日/月选择 JSON
【发布时间】:2018-02-15 22:15:01
【问题描述】:

我正在读取的 .json 文件中有以下 JSON 条目。

有许多 JSON 条目,每个条目都具有相同的格式。前两个值指定日期和月份:

[["1","12","06:26","08:03","12:09","13:46","14:17","16:05","17:42"]

所以最初的"1""12" 将等同于1st of December

有人可以帮我写一个方法,一旦读取 JSON,设备就会使用设备的日/月来检查要在应用屏幕上显示的 JSON 数组吗?

【问题讨论】:

标签: java android arrays json date


【解决方案1】:

我不是 JSON 专家,但我知道几天和几个月。下面是如何根据您的设备检查 JSON 数组中的这两个值是否表示今天的日期:

    MonthDay today = MonthDay.now(ZoneId.systemDefault());
    try {
        if (MonthDay.of(Integer.parseInt("12"), Integer.parseInt("1")).equals(today)) {
            System.out.println("This is the array to display today");
        }
    } catch (NumberFormatException nfe) {
        System.out.println("Day or month from array was not a number: " + nfe.getMessage());
    }

我正在使用并推荐 java.time,这是现代 Java 日期和时间 API。

ZoneId.systemDefault() 是我尝试获取设备的时区设置。但是请注意,我只获得了 JVM 的时区设置,它并不总是相同的。例如,JVM 设置可能已被您程序的其他部分或在同一 JVM 中运行的另一个程序更改。

如何从每个 JSON 数组中获取这些字符串还取决于您用于解析 JSON 的库。

问题:我可以在 Android 上使用 java.time 吗?

是的,您可以在 Android 上使用 java.time。它只需要至少 Java 6

  • 在 Java 8 及更高版本以及更新的 Android 设备上,内置了现代 API。
  • 在 Java 6 和 7 中,获取 ThreeTen Backport,即新类的后向端口(对于 JSR 310,ThreeTen;请参阅底部的链接)。
  • 在较旧的 Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保从 org.threeten.bp 导入日期和时间类以及子包。

链接

【讨论】:

    【解决方案2】:

    首先,要检索当前日期和月份,我将使用以下代码:

     Calendar instance = Calendar.getInstance();
     currentMonth = instance.get(Calendar.MONTH);
     currentDay = instance.get(Calendar.DAY);
    
     int month=currentMonth+1;
    

    在此之后,您需要通过创建一个json数组,然后是一个json对象并从字符串中过滤出特别需要的字符串(日和月)来从json字符串中获取数据。

    JSONArray arr = new JSONArray(result);
    JSONObject jObj = arr.getJSONObject(0);
    String day = jObj.getString("Day");
    String month = jObj.getString("Month");
    

    现在,将您拥有的所有日期放入数组中。 然后,简单地将所有给定日期与当前日期进行比较。

    问题是,你没有这样的前缀:

    [{"Date":"2012-1-4T00:00:00","keywords":null, ... }]
    

    这些用于告诉从何处提取字符串,因此您应该考虑更新您的 JSON 输出。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 2014-11-02
    • 2021-10-31
    • 2012-01-09
    • 2020-07-02
    相关资源
    最近更新 更多