from pydantic import BaseModel import json class RegionNames(BaseModel): fullName: str shortName: str displayName: str primaryDisplayName: str secondaryDisplayName: str lastSearchName: str class EssId(BaseModel): sourceName: str sourceId: int class Country(BaseModel): name: str isoCode2: str isoCode3: str class HierarchyInfo(BaseModel): country: Country class Coordinates(BaseModel): lat: float long: float class GaiaRegionResult(BaseModel): index: int gaiaId: int type: str regionNames: RegionNames essId: EssId coordinates: Coordinates hierarchyInfo: HierarchyInfo class SearchResults(BaseModel): q: str rid: str rc: str sr: list[GaiaRegionResult] if __name__ == "__main__": with open('locations_v3_search_example.json', 'r', encoding='utf-8') as json_file: data = json.load(json_file) results = SearchResults(**data) print('\n'.join( [result.regionNames.fullName for result in results.sr if result.type in ('CITY', 'NEIGHBORHOOD')]) )