Un archivo pokemon.json puede guardar datos sin ejecutar
instrucciones. JSON no dibuja una página: HTML define su estructura,
CSS su aspecto y JavaScript puede leer esos datos y mostrarlos.
Una API puede responder con JSON usando
Content-Type: application/json. También sirve para
archivos de configuración o intercambiar datos entre aplicaciones.
{
"nombre": "Pikachu",
"numero": 25,
"tipos": ["Eléctrico"],
"favorito": true,
"apodo": null
}
Este ejemplo es propio y simplificado; no representa la respuesta
completa de PokéAPI.
2. Construye la estructura
Las claves de un objeto y los textos llevan comillas dobles. Los
valores pueden ser objetos, arrays, textos, números, booleanos o
null.
-
Abre un objeto con
{. Define pares
como "nombre": "Pikachu".
-
Separa propiedades con comas. La última propiedad
no lleva coma final.
-
Usa
[] para una lista. Por ejemplo,
"tipos": ["Planta", "Veneno"].
-
Anida otro objeto cuando los datos estén relacionados.
Por ejemplo,
"datos": {"region": "Kanto"}.
-
Cierra los corchetes y las llaves. Cada apertura
debe tener su cierre.
"25" es texto; 25 es número.
true es un booleano; "true" es texto.
null expresa un valor nulo.
JSON no admite comentarios, funciones, undefined,
NaN ni Infinity. También puede contener un
array o un valor simple en su raíz.
El resultado de interpretar tus datos
Pulsa Validar y mostrar.
JSON con sangría
Todavía no se ha interpretado el ejemplo.
La vista de Pokémon utiliza nombre, numero, tipos y favorito.
Otros datos válidos se muestran en el bloque de texto.
{ "nombre": "Pikachu", "numero": 25, "tipos": ["Eléctrico"],
"favorito": true, "apodo": null, "datos": { "region": "Kanto" }
}
{ "entrenador": "Luis", "equipo": [ { "nombre": "Bulbasaur",
"numero": 1 }, { "nombre": "Pikachu", "numero": 25 } ] }
{ "nombre": "Pikachu", "numero": 25, }
JSON.parse(texto)
const texto = '{"nombre":"Pikachu","tipos":["Eléctrico"]}';
const pokemon = JSON.parse(texto);
console.log(pokemon.nombre); // Pikachu
console.log(pokemon.tipos[0]); // Eléctrico
Si la sintaxis no es válida, lanza un error. Captúralo con
try / catch, como hace el editor.
JSON.stringify(valor)
const pokemon = { nombre: "Pikachu", numero: 25 };
const texto = JSON.stringify(pokemon, null, 2);
console.log(texto); // texto JSON con sangría
El último argumento indica espacios de sangría. No todo valor
JavaScript se conserva: undefined y funciones se omiten en
objetos; las referencias circulares producen un error.
Una sintaxis válida no garantiza la estructura esperada.
{"nombre": 25} es JSON válido, pero una interfaz que
espera un nombre de texto debe comprobar el tipo.
async function leerPokemon() {
const response = await fetch("https://pokeapi.co/api/v2/pokemon/25");
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const pokemon = await response.json();
console.log(pokemon.name);
}
response.json() lee e interpreta el cuerpo de la
respuesta. Si ya tienes el valor interpretado, no necesitas llamar de
nuevo a JSON.parse().
El ejemplo no se ejecuta automáticamente.
Estudia fetch en JavaScript
y repasa HTTP.
Reto: añade un tercer miembro al equipo y localiza su
nombre con datos.equipo[2].nombre. Los índices empiezan
en cero.