首页 > 解决方案 > 在java中使用JsonArray Iteration检索基于LastModifiedDate的记录

问题描述

我有这个输入数据。我需要通过执行迭代来检索记录(这里是我们Id的jsonArray)。LastModifiedDatejsonArrayrecords

谁能帮我实现这一目标?

输入数据:

{
   "totalSize":2,
   "done":true,
   "records":[
      {
         "attributes":{
            "type":"Lead",
            "url":"/services/data/v45.0/sobjects/Lead/00Q5500000BHayREAT"
         },
         "Id":"00Q5500000BHayREAT",
         "LastModifiedDate":"2020-07-17T08:06:16.000+0000"
      },
      {
         "attributes":{
            "type":"Lead",
            "url":"/services/data/v45.0/sobjects/Lead/00Q5500000BHayHEAT"
         },
         "Id":"00Q5500000BHayHEAT",
         "LastModifiedDate":"2020-07-17T08:07:16.000+0000"
      }
   ]
}

我尝试了什么:

Step1:将每个记录日期添加到列表中

String recordsList="InputData";
            List<Date> lastDate = new ArrayList<Date>();
            String LeadID=null;
            try {
                JSONArray recs = new JSONArray(recordsList);
                
                for (int i = 0; i < recs.length(); ++i) {
                    JSONObject rec = recs.getJSONObject(i);
                    if(rec.has("LastModifiedDate"))
                    {
                        String LastModifiedDate = rec.getString("LastModifiedDate");
                        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
                        Date date = null;
                        try {
                            date = formatter.parse(LastModifiedDate);
                            System.out.println("date::::::::::" + date);
                        } catch (ParseException e) {
                            System.out.println("Invalid in LastModified Date Format");
                        }
                        lastDate.add(date);
                    }
                }
                lastDate.removeAll(Collections.singleton(null));
                Object highestLastModifyDate = Collections.max(lastDate);
                System.out.println("highestLastModifyDate:::::" + highestLastModifyDate);
        

Step2:将每个记录日期与highestLastModifyDate匹配并检索Id

for (int i = 0; i < recs.length(); ++i) {
    JSONObject rec = recs.getJSONObject(i);

    if(rec.has("LastModifiedDate"))
    {
        String LastModifiedDate = rec.getString("LastModifiedDate");
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
        Date date2 = null;

        try {
            date2 = formatter.parse(LastModifiedDate);
            //System.out.println("date2::::::::::" + date2);
        } catch (ParseException e) {
            System.out.println("Invalid in LastModified Date Format");
        }

        if (date2 != null && highestLastModifyDate.equals(date2)) {
            System.out.println("date2::::::::::" + date2);
            LeadID = rec.getString("Id");
        }
      }
  }

  System.out.println("LeadID::::::::::" + LeadID);
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}   

注意:此处显示的代码将起作用,但有没有有效的方法来实现这一点?

标签: javajson

解决方案


推荐阅读