std::map<std::string, std::vector<std::string>> newsblur_api::mk_feeds_to_tags( json_object * folders) { std::map<std::string, std::vector<std::string>> result; array_list * tags = json_object_get_array(folders); int tags_len = array_list_length(tags); for (int i = 0; i < tags_len; ++i) { json_object * tag_to_feed_ids = json_object_array_get_idx(folders, i); if (!json_object_is_type(tag_to_feed_ids, json_type_object)) // "folders" array contains not only dictionaries describing // folders but also numbers, which are IDs of feeds that don't // belong to any folder. This check skips these IDs. continue; json_object_object_foreach(tag_to_feed_ids, key, feeds_with_tag_obj) { std::string std_key(key); array_list * feeds_with_tag_arr = json_object_get_array(feeds_with_tag_obj); int feeds_with_tag_len = array_list_length(feeds_with_tag_arr); for (int j = 0; j < feeds_with_tag_len; ++j) { json_object * feed_id_obj = json_object_array_get_idx(feeds_with_tag_obj, j); std::string feed_id(json_object_get_string(feed_id_obj)); result[feed_id].push_back(std_key); } } }
std::map<std::string, std::vector<std::string>> newsblur_api::mk_feeds_to_tags( json_object * folders) { std::map<std::string, std::vector<std::string>> result; array_list * tags = json_object_get_array(folders); int tags_len = array_list_length(tags); for (int i = 0; i < tags_len; ++i) { json_object * tag_to_feed_ids = json_object_array_get_idx(folders, i); json_object_object_foreach(tag_to_feed_ids, key, feeds_with_tag_obj) { std::string std_key(key); array_list * feeds_with_tag_arr = json_object_get_array(feeds_with_tag_obj); int feeds_with_tag_len = array_list_length(feeds_with_tag_arr); for (int j = 0; j < feeds_with_tag_len; ++j) { json_object * feed_id_obj = json_object_array_get_idx(feeds_with_tag_obj, j); std::string feed_id(json_object_get_string(feed_id_obj)); result[feed_id].push_back(std_key); } } }