public void getReviews(Vector<String> ids, Vector<Review> reviews) {
    for (int i = 0; i < ids.size(); i++) {
      String id = ids.get(i);
      String response;
      if (review_cache.containsKey(id)) {
        response = review_cache.get(id);
        //System.out.println("Cache hit for " + id);
      } else {
        System.out.println("Getting reviews for " + id);
        response = this.getBusiness(id);
        writeReviewEntry(id, response);
        System.out.println("Response: " + response.length() + "\n" + response);
      }
      Map<String, String> flattened = parseResponse(response);
      int index = 0;
      while (true) {
        String k1 = "reviews[" + index + "].rating";
        String k2 = "reviews[" + index + "].excerpt";
        if (!flattened.containsKey(k1) && !flattened.containsKey(k2)) {
          //System.out.println("Exiting for " + k1);
          break;
        } else if(!flattened.containsKey(k1) || !flattened.containsKey(k2)){
          System.err.println("Skipping for " + k1);
          index++;
          continue;
        }
        //System.out.println("Adding review for " + k1);
        Review r = new Review();
        r.review_text = flattened.get(k2).toLowerCase();
        r.num_stars = Integer.parseInt(flattened.get(k1));
        reviews.add(r);
        //System.out.println("Got review " + r.num_stars + ": " + r.review_text);
        index++;
      } 
    }  
  }