Java 根据天/月选择JSON

Java 根据天/月选择JSON,java,android,arrays,json,date,Java,Android,Arrays,Json,Date,在我正在读取的.JSON文件中有以下JSON条目 有许多JSON条目,每个条目都具有相同的格式。最初的两个值指定日期和月份: [“1”、“12”、“06:26”、“08:03”、“12:09”、“13:46”、“14:17”、“16:05”、“17:42”] 因此,首字母“1”和“12”将等同于12月1日的 有人能帮我写一个方法,一旦读入JSON,设备就会使用设备日/月来检查要在应用程序屏幕上显示的JSON数组吗?首先,要检索当前的日和月,我将使用以下代码: Calendar instance

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

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

[“1”、“12”、“06:26”、“08:03”、“12:09”、“13:46”、“14:17”、“16:05”、“17:42”]

因此,首字母
“1”和
“12”将等同于12月1日的


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

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

 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输出。

< P>我不是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
。它至少需要java6

  • 在Java8和更高版本以及更新的Android设备上,内置了现代API
  • 在Java6和Java7中,获取三个后端口,即新类的后端口(三个用于JSR310;请参阅底部的链接)
  • 在较旧的Android上,使用Android版的ThreeTen Backport。它被称为ThreeTenABP。并确保您使用子包从
    org.ThreeTen.bp
    导入日期和时间类
链接
  • 解释如何使用
    java.time
  • ,其中首先描述了
    java.time
  • ,java.time
到java6和7的后台端口(JSR-310为三个)
  • ,Android版Three Ten Backport
  • ,解释得非常透彻

  • 好吧,这是接收数据最糟糕的方式看看这个例子吧。!@Atifabasi谢谢。这个例子使用的是过时的类
    Calendar
    Date
    ,更糟糕的是,还有臭名昭著的麻烦
    SimpleDateFormat
    。我建议避免使用它们,改为使用它们。
    Calendar
    类太长了过时。请不要教年轻人使用它,而是使用它。