public Business(Map<String, Object> raw) {
        // TODO: Check that the data has the correct schema.
        // NOTE: It's much safer to check the Map for fields than to catch a runtime exception.
        try {
        	if (raw.containsKey("rating")) {
        		this.rating = Double.parseDouble(raw.get("rating").toString());
        	} else {
        		this.rating = new Double(3);
        	}
        	if (raw.containsKey("snippet_text")) {
        		this.description = raw.get("snippet_text").toString();
        	} else {
        		this.description = "";
        	}
        	if (raw.containsKey("display_phone")) {
        		this.phone = raw.get("display_phone").toString();
        	} else {
        		this.phone = "";
        	}
        	if (raw.containsKey("location")) {
        		Map<String, Object> loc = (Map<String, Object>) raw.get("location");
        		if (loc.containsKey("display_address")) {
        			this.location = loc.get("display_address").toString();
        		} else {
        			this.location = "";
        		}
        	} else {
        		this.location ="";
        	}
        	if (raw.containsKey("id")) {
        		this.id = raw.get("id").toString();
        	} else {
        		this.id = "";
        	}
        	if (raw.containsKey("name")) {
        		this.name = raw.get("name").toString();
        	} else {
        		this.name = "";
        	}
        } catch (NullPointerException e) {
    		System.err.println("Could not convert the response to a Business; a field was missing.");
    		e.printStackTrace();
    	} catch (ClassCastException e) {
    		System.err.println("Could not convert the response to a Business; a field had the wrong structure.");
    		e.printStackTrace();
        }
    
	}