input: Write a python function to generate and load a JSON file, ensuring that keys contain only letters.
  assert testGenerateAndLoadJSONValidKeysHasOnlyLetters1() == None
  assert testGenerateAndLoadJSONValidKeysHasOnlyLetters2() == None
output: import json
  import re
  
  def generate_and_load_json(data, filename):
      def validate_keys(d):
          if isinstance(d, dict):
              return all(re.match("^[A-Za-z]+$", k) and validate_keys(v) for k, v in d.items())
          if isinstance(d, list):
              return all(validate_keys(i) for i in d)
          return True
  
      if not validate_keys(data):
          raise ValueError("All keys must contain only letters")
  
      with open(filename, 'w') as f:
          json.dump(data, f)
  
      with open(filename, 'r') as f:
          loaded_data = json.load(f)
      
      return loaded_data
  
  # Test functions
  def testGenerateAndLoadJSONValidKeysHasOnlyLetters1():
      data = {"name": "John", "age": 30, "city": "New York"}
      filename = "test1.json"
      assert generate_and_load_json(data, filename) == data
  
  def testGenerateAndLoadJSONValidKeysHasOnlyLetters2():
      data = {"person": {"firstName": "Jane", "lastName": "Doe"}, "location": {"city": "Los Angeles"}}
      filename = "test2.json"
      assert generate_and_load_json(data, filename) == data