Я пытаюсь разобрать это json
{
"total_count": 3,
"offset": 0,
"limit": 50,
"notifications": [
{
"isEdge": false,
"large_icon": "",
"priority": 10,
"queued_at": 1579590097,
"remaining": 0,
"send_after": 1579590097,
"completed_at": 1579590110,
"small_icon": "",
"successful": 1,
"received": 1,
"tags": null,
"filters": null,
"template_id": null,
"ttl": null,
"url": "",
"contents": {
"en": "MoMo House presents MoMo eating competition. Come join us on Jan 26th
for the biggest MoMo eating competition ever."
}
"web_url": null,
"app_url": null,
"web_buttons": null,
"web_push_topic": null,
"wp_sound": "",
"wp_wns_sound": "",
"ios_attachments": null
}
]
}
Это мой код, чтобы разобрать его
public ResponseEntity<HashMap<String,List<Notification>>> getAllNotifications(){
RestTemplate restTemplate = new RestTemplate();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Authorization",Constants.ONESIGNAL_REST_KEY);
HttpEntity<String> entity = new HttpEntity<String>("body", httpHeaders);
ResponseEntity<OneSignalResponse> oneSignalResponseResponseEntity = restTemplate.exchange(Constants.ONESIGNAL_URL, HttpMethod.GET,entity,OneSignalResponse.class);
OneSignalResponse oneSignalResponse=oneSignalResponseResponseEntity.getBody();
System.out.println("Title "+oneSignalResponse.getNotifications().get(0).getHeadings().getEn());
List<Notification> notifications = new ArrayList<>();
for(NotificationsItem oneSig : oneSignalResponse.getNotifications()){
Notification notification = new Notification();
notification.setId(oneSig.getId());
notification.setTitle(oneSig.getHeadings().getEn());
notification.setMessage(oneSig.getContents().getEn());
System.out.println("value of sent time "+oneSig.getCompletedAt()); //this is null
Date date = new Date(sentTime);
notification.setDate(localDateTime.toString());
notifications.add(notification);
}
HashMap<String,List<Notification>> hashMap = new HashMap<>();
hashMap.put("notifications",notifications);
return new ResponseEntity<>(hashMap, HttpStatus.OK);
}
И это мой POJO
public class NotificationsItem{
@SerializedName("isEdge")
private boolean isEdge;
@SerializedName("delayed_option")
private String delayedOption;
@SerializedName("queued_at")
private int queuedAt;
@SerializedName("failed")
private int failed;
@SerializedName("priority")
private int priority;
@SerializedName("remaining")
private int remaining;
@SerializedName("tags")
private Object tags;
@SerializedName("canceled")
private boolean canceled;
@SerializedName("chrome_icon")
private String chromeIcon;
@SerializedName("completed_at")
private Object completedAt;
@SerializedName("isWP")
private boolean isWP;
@SerializedName("send_after")
private int sendAfter;
@SerializedName("adm_sound")
private String admSound;
@SerializedName("chrome_web_image")
private String chromeWebImage;
@SerializedName("contents")
private Contents contents;
@SerializedName("converted")
private int converted;
@SerializedName("android_visibility")
private int androidVisibility;
@SerializedName("headings")
private Headings headings;
@SerializedName("adm_group")
private String admGroup;
@SerializedName("chrome_web_badge")
private String chromeWebBadge;
@SerializedName("spoken_text")
private SpokenText spokenText;
@SerializedName("ios_badgeCount")
private int iosBadgeCount;
@SerializedName("isChrome")
private boolean isChrome;
@SerializedName("alexa_ssml")
private Object alexaSsml;
@SerializedName("alexa_display_title")
private Object alexaDisplayTitle;
@SerializedName("android_accent_color")
private String androidAccentColor;
@SerializedName("android_group")
private String androidGroup;
@SerializedName("include_external_user_ids")
private Object includeExternalUserIds;
@SerializedName("isAdm")
private boolean isAdm;
@SerializedName("successful")
private int successful;
@SerializedName("web_push_topic")
private Object webPushTopic;
@SerializedName("adm_large_icon")
private String admLargeIcon;
@SerializedName("content_available")
private boolean contentAvailable;
@SerializedName("adm_small_icon")
private String admSmallIcon;
@SerializedName("buttons")
private Object buttons;
@SerializedName("app_url")
private Object appUrl;
@SerializedName("ios_badgeType")
private String iosBadgeType;
@SerializedName("delivery_time_of_day")
private String deliveryTimeOfDay;
@SerializedName("large_icon")
private String largeIcon;
@SerializedName("big_picture")
private String bigPicture;
@SerializedName("filters")
private Object filters;
@SerializedName("ttl")
private Object ttl;
@SerializedName("url")
private String url;
@SerializedName("include_player_ids")
private Object includePlayerIds;
@SerializedName("android_led_color")
private String androidLedColor;
@SerializedName("isWP_WNS")
private boolean isWPWNS;
@SerializedName("web_url")
private Object webUrl;
@SerializedName("adm_group_message")
private AdmGroupMessage admGroupMessage;
@SerializedName("adm_big_picture")
private String admBigPicture;
@SerializedName("small_icon")
private String smallIcon;
@SerializedName("template_id")
private Object templateId;
@SerializedName("web_buttons")
private Object webButtons;
@SerializedName("isAndroid")
private boolean isAndroid;
@SerializedName("isIos")
private boolean isIos;
@SerializedName("errored")
private int errored;
//getters setters
}
Поскольку json велико, я включил только те, которые имеют значение, и POJO может и не быть соответствующим образом здесь.
Поэтому, когда я вызываю метод, я получаю значение contents
но я получаю нулевое значение, когда пытаюсь получить completedAt
, это также отображается как комментарий в коде. Таким образом, я могу разобрать некоторые части отлично, но я не могу разобрать некоторые. Я не знаю, что я делаю неправильно, поэтому любая помощь будет высоко оценена. Спасибо