QList<QTweetStatus> QTweetConvert::jsonArrayToStatusList(const QJsonArray &jsonArray) { QList<QTweetStatus> statuses; for (int i = 0; i < jsonArray.size(); ++ i) { QTweetStatus tweetStatus = jsonObjectToStatus(jsonArray[i].toObject()); statuses.append(tweetStatus); } return statuses; }
QTweetUser QTweetConvert::jsonObjectToUser(const QJsonObject &jsonObject) { QTweetUser userInfo; userInfo.setId(static_cast<qint64>(jsonObject.value("id_str").toString().toLong())); if (jsonObject.contains("name")) { userInfo.setName(jsonObject.value("name").toString()); userInfo.setLocation(jsonObject.value("location").toString()); userInfo.setprofileImageUrl(jsonObject.value("profile_image_url").toString()); userInfo.setCreatedAt(jsonObject.value("created_at").toString()); userInfo.setFavouritesCount(static_cast<int>(jsonObject.value("favourites_count").toDouble())); userInfo.setUrl(jsonObject.value("url").toString()); userInfo.setUtcOffset(static_cast<int>(jsonObject.value("utc_offset").toDouble())); userInfo.setProtected(jsonObject.value("protected").toBool()); userInfo.setFollowersCount(static_cast<int>(jsonObject.value("followers_count").toDouble())); userInfo.setVerified(jsonObject.value("verified").toBool()); userInfo.setGeoEnabled(jsonObject.value("geo_enabled").toBool()); userInfo.setDescription(jsonObject.value("description").toString()); userInfo.setTimezone(jsonObject.value("time_zone").toString()); userInfo.setStatusesCount(static_cast<int>(jsonObject.value("statuses_count").toDouble())); userInfo.setScreenName(jsonObject.value("screen_name").toString()); userInfo.setContributorsEnabled(jsonObject.value("contributors_enabled").toBool()); userInfo.setListedCount(static_cast<int>(jsonObject.value("listed_count").toDouble())); userInfo.setLang(jsonObject.value("lang").toString()); userInfo.setFollowing(jsonObject.value("following").toBool()); if (jsonObject.contains("status")) { QJsonObject jsonStatusObject = jsonObject.value("status").toObject(); QTweetStatus status = jsonObjectToStatus(jsonStatusObject); userInfo.setStatus(status); } } return userInfo; }
QTweetStatus QTweetConvert::jsonObjectToStatus(const QJsonObject& json) { QTweetStatus status; status.setCreatedAt(json["created_at"].toString()); status.setText(json["text"].toString()); status.setId(static_cast<qint64>(json["id"].toDouble())); status.setInReplyToUserId(static_cast<qint64>(json["in_reply_to_user_id"].toDouble())); status.setInReplyToScreenName(json["in_reply_to_screen_name"].toString()); status.setFavorited(json["favorited"].toBool()); QJsonObject userObject = json["user"].toObject(); QTweetUser user = jsonObjectToUser(userObject); status.setUser(user); status.setSource(json["source"].toString()); status.setInReplyToStatusId(static_cast<qint64>(json["in_reply_to_status_id"].toDouble())); //check if contains native retweet if (json.contains("retweeted_status")) { QJsonObject retweetObject = json["retweeted_status"].toObject(); QTweetStatus rtStatus = jsonObjectToStatus(retweetObject); status.setRetweetedStatus(rtStatus); } //parse place id if it's not null QJsonValue placeValue = json["place"]; if (!placeValue.isNull()) { QTweetPlace place = jsonObjectToPlace(placeValue.toObject()); status.setPlace(place); } //check if contains entities if (json.contains("entities")) { QJsonObject entitiesObject = json["entities"].toObject(); //url entities QJsonArray urlEntitiesList = entitiesObject["urls"].toArray(); for (int i = 0; i < urlEntitiesList.size(); ++i) { QTweetEntityUrl urlEntity = jsonObjectToEntityUrl(urlEntitiesList[i].toObject()); status.addUrlEntity(urlEntity); } //hashtag entities QJsonArray hashtagEntitiesList = entitiesObject["hashtags"].toArray(); for (int i = 0; i < hashtagEntitiesList.size(); ++i) { QTweetEntityHashtag hashtagEntity = jsonObjectToEntityHashtag(hashtagEntitiesList[i].toObject()); status.addHashtagEntity(hashtagEntity); } //user mentions QJsonArray userMentionsEntitiesList = entitiesObject["user_mentions"].toArray(); for (int i = 0; i < userMentionsEntitiesList.count(); ++i) { QTweetEntityUserMentions userMentionsEntity = jsonObjectToEntityUserMentions(userMentionsEntitiesList[i].toObject()); status.addUserMentionsEntity(userMentionsEntity); } //media QJsonArray mediaEntitiesList = entitiesObject["media"].toArray(); for (int i = 0; i < mediaEntitiesList.count(); ++i) { QTweetEntityMedia mediaEntity = jsonObjectToEntityMedia(mediaEntitiesList[i].toObject()); status.addMediaEntity(mediaEntity); } } return status; }