code: def _parse_json(self, doc, exactly_one):
          
          if doc.get('error'):
              raise GeocoderServiceError(doc['error']['message'])
  
          try:
              places = doc['response']['GeoObjectCollection']['featureMember']
          except KeyError:
              raise GeocoderParseError('Failed to parse server response')
  
          def parse_code(place):
              """
              Parse each record.
              """
              try:
                  place = place['GeoObject']
              except KeyError:
                  raise GeocoderParseError('Failed to parse server response')
  
              longitude, latitude = [
                  float(_) for _ in place['Point']['pos'].split(' ')
              ]
  
              name_elements = ['name', 'description']
              location = ', '.join([place[k] for k in name_elements if place.get(k)])
  
              return Location(location, (latitude, longitude), place)
  
          if exactly_one:
              try:
                  return parse_code(places[0])
              except IndexError:
                  return None
          else:
              return [parse_code(place) for place in places]
docs: Parse JSON response body.