Estructuras de Datos para Programación
Dataset de Códigos Postales de España en JSON
Descarga el archivo estructurado en formato JSON nativo (UTF-8) con los 14.662 códigos postales de España, nombres de municipios, provincias, códigos INE y coordenadas GPS WGS84. Diseñado para desarrollo en JavaScript, Node.js, Python o consumo offline en aplicaciones móviles.
Estructura del Array de Objetos JSON
El archivo consta de una matriz de objetos con claves descriptivas y normalizadas en minúsculas. Los códigos postales y de provincia se almacenan como cadenas de texto para evitar la pérdida de los ceros iniciales:
codigos-postales-espana.json (Ejemplo de objeto)
[
{
"codigo_postal": "28850",
"municipio": "Torrejón de Ardoz",
"provincia": "Madrid",
"codigo_provincia": "28",
"codigo_ine": "28148000000",
"latitud": "40.4591561",
"longitud": "-3.4789902"
},
{
"codigo_postal": "08001",
"municipio": "Barcelona",
"provincia": "Barcelona",
"codigo_provincia": "08",
"codigo_ine": "08019000000",
"latitud": "41.3800000",
"longitud": "2.1700000"
}
]
| Clave | Tipo | Ejemplo | Descripción |
|---|---|---|---|
codigo_postal |
String | "28850" |
Código postal asignado por Correos (formato string de 5 caracteres). |
municipio |
String | "Torrejón de Ardoz" |
Nombre oficial del municipio o población. |
provincia |
String | "Madrid" |
Provincia a la que pertenece. |
codigo_provincia |
String | "28" |
Prefijo numérico provincial (01 a 52). |
codigo_ine |
String | "28148000000" |
Código oficial del Instituto Nacional de Estadística. |
latitud / longitud |
String / Float | "40.4591561", "-3.4789902" |
Coordenadas geográficas WGS84. |
Cómo Cargar y Filtrar el Archivo JSON Offline
Al ser un archivo estático, puedes incluirlo directamente en tu proyecto para realizar búsquedas ultrarrápidas en memoria sin latencia de red:
const fs = require('fs');
// Cargar el archivo JSON en memoria
const rawData = fs.readFileSync('codigos-postales-espana.json', 'utf8');
const codigosPostales = JSON.parse(rawData);
// 1. Crear un índice Map por código postal para búsquedas O(1) instantáneas
const cpMap = new Map(codigosPostales.map(item => [item.codigo_postal, item]));
const torrejon = cpMap.get('28850');
console.log('Municipio:', torrejon.municipio); // "Torrejón de Ardoz"
// 2. Filtrar todos los códigos de una provincia
const madridCPs = codigosPostales.filter(item => item.codigo_provincia === '28');
console.log(`Madrid tiene ${madridCPs.length} códigos postales registrados.`);
import json
# Cargar dataset JSON
with open('codigos-postales-espana.json', 'r', encoding='utf-8') as f:
datos_cp = json.load(f)
# 1. Búsqueda por código postal mediante diccionario
indice_cp = {item['codigo_postal']: item for item in datos_cp}
registro = indice_cp.get('28850')
print(f"Municipio: {registro['municipio']} - GPS: {registro['latitud']}, {registro['longitud']}")
# 2. Filtrar por provincia (ej. Barcelona - 08)
bcn_list = [item for item in datos_cp if item['codigo_provincia'] == '08']
print(f"Total en Barcelona: {len(bcn_list)}")
// En proyectos con Vite, Webpack o Next.js puedes importarlo directamente:
import codigosPostales from './codigos-postales-espana.json';
export function buscarLocalidad(query) {
const q = query.toLowerCase().trim();
return codigosPostales.filter(item =>
item.codigo_postal.includes(q) ||
item.municipio.toLowerCase().includes(q)
).slice(0, 10); // Primeras 10 sugerencias para un autocompletado
}