Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JSON: J ava S cript O bject N otation.
Intercambio de datos
De esta forma podemos trabajar con los datos como objetos JavaScript,
sin complicados análisis ni traducciones.
Enviando datos
Ejemplos :
<script>
</script>
<script>
document.getElementById("demo").innerHTML = myObj.name;
</script>
Almacenamiento de datos
Ejemplo
Almacenar datos en el almacenamiento local :
<script>
// Almacenamiento de datos:
myJSON = JSON.stringify(myObj);
localStorage.setItem("testJSON", myJSON);
// Recuperando datos:
text = localStorage.getItem("testJSON");
obj = JSON.parse(text);
document.getElementById("demo").innerHTML = obj.city;
</script>
¿Qué es JSON?
JSON.parse()
Sintaxis JSON
La sintaxis JSON es un subconjunto de la sintaxis JavaScript.
Reglas de sintaxis JSON
Ejemplo
name: "John"
JSON
{ "name":"John" }
{ name:"John" }
Valores JSON
una cadena
un número
un objeto (objeto JSON)
una matriz
un booleano
nulo
Una función
una fecha
indefinido
JSON
{ "name":"John" }
JavaScript
{ name:'John' }
JSON utiliza la sintaxis de JavaScript
Ejemplo
Ejemplo
// returns John
person.name;
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var myObj, x;
x = myObj.name;
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
También se puede acceder así:
Ejemplo
// returns John
person["name"];
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var myObj, x;
x = myObj["name"];
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
Ejemplo
person.name = "Gilbert";
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var myObj, x;
myObj.name = "Gilbert";
document.getElementById("demo").innerHTML = myObj.name;
</script>
</body>
</html>
Ejemplo
person["city"] = "Barinas";
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var myObj, x;
myObj["city"] = "Caracas";
document.getElementById("demo").innerHTML = myObj.city;
</script>
</body>
</html>
Archivos JSON
JSON frente a XML
Tanto JSON como XML se pueden utilizar para recibir datos de un
servidor web.
Ejemplo JSON
{"employees":[
{ "firstName":"John", "lastName":"Doe" },
{ "firstName":"Anna", "lastName":"Smith" },
{ "firstName":"Peter", "lastName":"Jones" }
]}
Ejemplo XML
<employees>
<employee>
<firstName>John</firstName> <lastName>Doe</lastName>
</employee>
<employee>
<firstName>Anna</firstName> <lastName>Smith</lastName>
</employee>
<employee>
<firstName>Peter</firstName> <lastName>Jones</lastName>
</employee>
</employees>
Para las aplicaciones AJAX, JSON es más rápido y más fácil que XML:
Usando XML
Usando JSON
Tipos de datos JSON
En JSON, los valores deben ser uno de los siguientes tipos de datos:
una cadena
un número
un objeto (objeto JSON)
una matriz
un booleano
Null
Una función
una fecha
indefinido
Cadenas JSON
Ejemplo:
{ "name":"John" }
Números JSON
Los números en JSON deben ser un número entero o un punto
flotante.
Ejemplo
{ "age":30 }
Objetos JSON
Ejemplo
{
"employee":{ "name":"John", "age":30, "city":"New York" }
}
Los objetos como valores en JSON deben seguir las mismas reglas
que los objetos JSON.
Matrices JSON
Ejemplo
{
"employees":[ "John", "Anna", "Peter" ]
}
JSON booleanos
Ejemplo
{ "sale":true }
JSON nulo
Ejemplo
{ "middlename":null }
JSON .parse ()
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = obj.name +
", " + obj.age;
</script>
</body>
</html>
Ejemplo
Utilice XMLHttpRequest para obtener datos del servidor:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
xmlhttp.onreadystatechange = function() {
document.getElementById("demo").innerHTML =
myObj.name;
};
xmlhttp.send();
</script>
</body>
</html>
Json_demo.txt
"name":"John",
"age":31,
"pets":[
{ "animal":"dog", "name":"Fido" },
{ "animal":"cat", "name":"Felix" },
{ "animal":"hamster", "name":"Lightning" }
Ejemplo
<!DOCTYPE html>
<html>
<body>
<h2>Contenido como matriz.</h2>
<p id="demo"></p>
<script>
xmlhttp.onreadystatechange = function() {
document.getElementById("demo").innerHTML = myArr[0];
};
xmlhttp.send();
</script>
</body>
</html>
Json_demo_array.txt
Excepciones
Análisis de fechas
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
if (key == "birth")
else
return value;
});
</script>
</body>
</html>
Funciones de análisis
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
</script>
</body>
</html>
Debe evitar usar funciones en JSON, las funciones perderán su alcance y
tendrá que usarlas eval()para convertirlas nuevamente en funciones.
JSON .stringify ()
Al enviar datos a un servidor web, los datos deben ser una cadena.
var myJSON = JSON.stringify(obj);
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var obj = { name: "Luis", edad: 30, ciudad: "Barinas" };
document.getElementById("demo").innerHTML = myJSON;
</script>
</body>
</html>
var arr = [ "John", "Peter", "Sally", "Jane" ];
var myJSON = JSON.stringify(arr);
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = myJSON;
</script>
</body>
</html>
Excepciones
Cadena de fechas
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var obj = { name: "John", today: new Date(), city: "New York" };
document.getElementById("demo").innerHTML = myJSON;
</script>
</body>
</html>
Funciones de cadena
En JSON, las funciones no están permitidas como valores de objeto.
Ejemplo:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var obj = { name: "John", age: function () {return 30;}, city: "New
York" };
document.getElementById("demo").innerHTML = myJSON;
</script>
</body>
</html>
Ejemplo:
<!DOCTYPE html>
<html>
<body>
<script>
var obj = { name: "John", age: function () {return 30;}, city: "New
York" };
obj.age = obj.age.toString();
document.getElementById("demo").innerHTML = myJSON;
</script>
</body>
</html>
Objetos JSON
Sintaxis del objeto
Ejemplo
{ "name":"John", "age":30, "car":null }
Las claves deben ser cadenas y los valores deben ser un tipo de datos
JSON válido (cadena, número, objeto, matriz, booleano o nulo).
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var myObj, x;
x = myObj.name;
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var myObj, x;
x = myObj["name"];
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
Bucle de un objeto
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var myObj, x;
for (x in myObj)
document.getElementById("demo").innerHTML += x + "<br>";
</script>
</body>
</html>
En un bucle for-in, use la notación de corchetes para acceder a
los valores de propiedad :
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var myObj, x;
for (x in myObj)
document.getElementById("demo").innerHTML += myObj[x] +
"<br>";
</script>
</body>
</html>
Ejemplo
myObj = {
"name":"John",
"age":30,
"cars": {
"car1":"Ford",
"car2":"BMW",
"car3":"Fiat"
}
}
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var myObj = {
"name":"John",
"age":30,
"cars": {
"car1":"Ford",
"car2":"BMW",
"car3":"Fiat"
document.getElementById("demo").innerHTML +=
myObj.cars.car2 + "<br>";
//or:
document.getElementById("demo").innerHTML +=
myObj.cars["car2"];
</script>
</body>
</html>
Modificar valores
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
myObj = {
"name":"John",
"age":30,
"cars": {
"car1":"Ford",
"car2":"BMW",
"car3":"Fiat"
myObj.cars.car2 = "Mercedes";
for (i in myObj.cars)
x += myObj.cars[i] + "<br>";
}
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
Ejemplo
myObj.cars["car2"] = "Mercedes";
Ejemplo
delete myObj.cars.car2;
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
myObj = {
"name":"John",
"age":30,
"cars": {
"car1":"Ford",
"car2":"BMW",
"car3":"Fiat"
delete myObj.cars.car2;
for (i in myObj.cars)
x += myObj.cars[i] + "<br>";
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
Matrices JSON
Ejemplo
[ "Ford", "BMW", "Fiat" ]
Las matrices en JSON son casi las mismas que las matrices en
JavaScript.
En JavaScript, los valores de matriz pueden ser todos los anteriores, más
cualquier otra expresión de JavaScript válida, incluidas funciones, fechas
e indefinidas.
{
"name":"John",
"age":30,
"cars":[ "Ford", "BMW", "Fiat" ]
}
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var myObj, x;
myObj = {
"name":"John",
"age":30,
};
x = myObj.cars[0];
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
Bucle a través de una matriz
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
myObj = {
"name":"John",
"age":30,
};
for (i in myObj.cars)
x += myObj.cars[i] + "<br>";
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
myObj = {
"name":"John",
"age":30,
};
x += myObj.cars[i] + "<br>";
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
Los valores de una matriz también pueden ser otra matriz o incluso otro
objeto JSON:
Ejemplo
myObj = {
"name":"John",
"age":30,
"cars": [
{ "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },
{ "name":"BMW", "models":[ "320", "X3", "X5" ] },
{ "name":"Fiat", "models":[ "500", "Panda" ] }
]
}
Para acceder a las matrices dentro de las matrices, use un bucle for-in
para cada matriz:
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
myObj = {
"name":"John",
"age":30,
"cars": [
for (i in myObj.cars)
x += myObj.cars[i].models[j] + "<br>";
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
Ejemplo
myObj.cars[1] = "Mercedes";
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
myObj = {
"name":"John",
"age":30,
};
myObj.cars[1] = "Mercedes";
for (i in myObj.cars)
{
x += myObj.cars[i] + "<br>";
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
Ejemplo
delete myObj.cars[1];
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
myObj = {
"name":"John",
"age":30,
"cars": ["Ford","BMW","Fiat"]
delete myObj.cars[1];
for (i in myObj.cars)
x += myObj.cars[i] + "<br>";
}
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
JSON PHP
El archivo PHP
Archivo PHP
<?php
$myObj->age = 28;
$myObj->city = "Caracas";
$myJSON = json_encode($myObj);
echo $myJSON;
?>
El cliente JavaScript
Aquí hay un JavaScript en el cliente, usando una llamada AJAX para
solicitar el archivo PHP del ejemplo anterior:
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
xmlhttp.onreadystatechange = function()
document.getElementById("demo").innerHTML = myObj.name;
};
xmlhttp.send();
</script>
</body>
</html>
Matriz PHP
Archivo PHP
<?php
$myArr = array("John", "Mary", "Peter", "Sally");
$myJSON = json_encode($myArr);
echo $myJSON;
?>
El cliente JavaScript
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
xmlhttp.onreadystatechange = function()
{
document.getElementById("demo").innerHTML = myObj[2];
};
xmlhttp.send();
</script>
</body>
</html>
Imagine que tiene una base de datos en su servidor y desea enviarle una
solicitud del cliente en la que solicita las 10 primeras filas en una tabla
llamada "clientes".
Ejemplo
<!DOCTYPE html>
<html>
<body>
<h2>Obtenga datos como JSON de un archivo PHP en el
servidor.</h2>
<p id="demo"></p>
<script>
obj = { "limit":10 };
dbParam = JSON.stringify(obj);
xmlhttp.onreadystatechange = function()
document.getElementById("demo").innerHTML =
this.responseText;
};
xmlhttp.send();
</script>
</body>
</html>
Ejemplo explicado:
Envíe una solicitud al archivo PHP, con la cadena JSON como parámetro.
Archivo PHP
<?php
$stmt->bind_param("s", $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($outp);
?>
Recorrer el resultado
Convierta el resultado recibido del archivo PHP en un objeto JavaScript, o
en este caso, una matriz JavaScript:
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
obj = { "limit":10 };
dbParam = JSON.stringify(obj);
xmlhttp.onreadystatechange = function()
myObj = JSON.parse(this.responseText);
for (x in myObj)
document.getElementById("demo").innerHTML = txt;
}
};
xmlhttp.send();
</script>
</body>
</html>
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
obj = { "limit":10 };
dbParam = JSON.stringify(obj);
xmlhttp.onreadystatechange = function()
{
if (this.readyState == 4 && this.status == 200)
myObj = JSON.parse(this.responseText);
for (x in myObj)
document.getElementById("demo").innerHTML = txt;
};
xmlhttp.setRequestHeader("Content-type", "application/x-www-
form-urlencoded");
xmlhttp.send("x=" + dbParam);
</script>
</body>
</html>
Archivo PHP
<?php
$stmt->bind_param("s", $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($outp);
?>
HTML JSON
Tabla HTML
Haga una tabla HTML con los datos recibidos como JSON:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
dbParam = JSON.stringify(obj);
xmlhttp.onreadystatechange = function()
{
myObj = JSON.parse(this.responseText);
for (x in myObj) {
txt += "</table>"
document.getElementById("demo").innerHTML = txt;
};
xmlhttp.setRequestHeader("Content-type", "application/x-www-
form-urlencoded");
xmlhttp.send("x=" + dbParam);
</script>
</body>
</html>
Archivo Php
<?php
$stmt = $conn->prepare($consulta);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($outp);
?>
Tabla HTML dinámica
<!DOCTYPE html>
<html>
<body>
<option value="customers">Clientes</option>
<option value="products">Productos</option>
<option value="suppliers">Proveedores</option>
</select>
<p id="demo"></p>
<script>
function change_myselect(sel)
dbParam = JSON.stringify(obj);
xmlhttp.onreadystatechange = function()
myObj = JSON.parse(this.responseText);
for (x in myObj)
{
txt += "</table>"
document.getElementById("demo").innerHTML = txt;
};
xmlhttp.setRequestHeader("Content-type", "application/x-
www-form-urlencoded");
xmlhttp.send("x=" + dbParam);
</script>
</body>
</html>
Archivo PHP
<?php
$stmt = $conn->prepare($consulta);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($outp);
?>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
dbParam = JSON.stringify(obj);
xmlhttp.onreadystatechange = function()
myObj = JSON.parse(this.responseText);
txt += "<select>"
for (x in myObj)
txt += "</select>"
document.getElementById("demo").innerHTML = txt;
};
xmlhttp.setRequestHeader("Content-type", "application/x-
www-form-urlencoded");
xmlhttp.send("x=" + dbParam);
</script>
</body>
</html>
JSONP
Introducción a JSONP
<script src="demo_jsonp.php">
Ejemplo
<?php
echo "myFunc(".$myJSON.");";
?>
El resultado devuelve una llamada a una función denominada "myFunc"
con los datos JSON como parámetro.
La función JavaScript
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
function myFunc(myObj)
document.getElementById("demo").innerHTML = myObj.name;
</script>
<script src="jsonp.php"></script>
</body>
</html>
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
function clickButton()
var s = document.createElement("script");
s.src = "jsonp.php";
document.body.appendChild(s);
function myFunc(myObj)
{
document.getElementById("demo").innerHTML =
myObj.name;
</script>
</body>
</html>
Haga que el ejemplo sea dinámico enviando JSON al archivo php y deje
que el archivo php devuelva un objeto JSON en función de la información que
obtenga.
Archivo PHP
<?php
$outp = array();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo "myFunc(".json_encode($outp).")";
?>
Ejemplo de JavaScript