JSON (JavaScript Object Notation) es un formato para el intercambios de datos, básicamente JSON describe los datos con una sintaxis dedicada que se usa para identificar y gestionar los datos. JSON nació como una alternativa a XML, el fácil uso en javascript ha generado un gran numero de seguidores de esta alternativa. Una de las mayores ventajas que tiene el uso de JSON es que puede ser leído por cualquier lenguaje de programación. Por lo tanto, puede ser usado para el intercambio de información entre distintas tecnologías.
In [ ]:
"Nombre" : "José Miguel"
Los posibles valores que podemos encontrar en Json son los siguientes:
Ejemplo de OBJETO
{ "NombreFruta":"Manzana" , "Cantidad":20 }
Ejemplo de ARRAYS
{"Fruteria": [ {"Fruta": [ {"Nombre":"Manzana","Cantidad":10}, {"Nombre":"Pera","Cantidad":20}, {"Nombre":"Naranja","Cantidad":30} ] }, {"Verdura": [ {"Nombre":"Lechuga","Cantidad":80}, {"Nombre":"Tomate","Cantidad":15}, {"Nombre":"Pepino","Cantidad":50} ] } ] }
Prueba este array en la web
Convierte objetos Python a JSON
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, **kw)
In [40]:
import json
data = {"Fruteria": [ {"Fruta": [ {"Nombre":"Manzana","Cantidad":10.5}, {"Nombre":"Pera","Cantidad":20}, {"Nombre":"Naranja","Cantidad":30} ] }, {"Verdura": [ {"Nombre":"Lechuga","Cantidad":80}, {"Nombre":"Tomate","Cantidad":15}, {"Nombre":"Pepino","Cantidad":50} ] } ]}
#Nos imprime en pantalla data como un tipo de dato nativo.
print 'DATA:', repr(data)
#Nos devuelve el String con el JSON
data_string = json.dumps(data)
print '\nJSON:', data_string
#Ahora trabajamos con indent
print '\nJSON con indent:', json.dumps(data, indent = 2)
In [ ]:
Convertimos un JSON a un objeto Python
In [14]:
import json
data = {"Fruteria": [ {"Fruta": [ {"Nombre":"Manzana","Cantidad":10}, {"Nombre":"Pera","Cantidad":20}, {"Nombre":"Naranja","Cantidad":30} ] }, {"Verdura": [ {"Nombre":"Lechuga","Cantidad":80}, {"Nombre":"Tomate","Cantidad":15}, {"Nombre":"Pepino","Cantidad":50} ] } ]}
data_string = json.dumps(data)
print 'ENCODED:', data_string
print "\n"
decoded = json.loads(data_string)
print 'DECODED:', decoded
La síntaxis de loads es la siguiente json.loads(s, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
In [39]:
from decimal import Decimal
json_string='{"name":"Product-1","quantity":1,"price":12.50}'
print "Salida estandar " + repr(json.loads(json_string))
print "\n"
print "Modificado Float " + repr(json.loads(json_string, parse_float=Decimal))
In [19]:
import json
data = {"Fruteria": [ {"Fruta": [ {"Nombre":"Manzana","Cantidad":10}, {"Nombre":"Pera","Cantidad":20}, {"Nombre":"Naranja","Cantidad":30} ] }, {"Verdura": [ {"Nombre":"Lechuga","Cantidad":80}, {"Nombre":"Tomate","Cantidad":15}, {"Nombre":"Pepino","Cantidad":50} ] } ]}
#encoded
data_string = json.dumps(data)
#Decoded
decoded = json.loads(data_string)
print "Tenemos "+str(decoded["Fruteria"][1]["Verdura"][0]["Cantidad"])+" Lechugas."
print "Es una " + (decoded["Fruteria"][1]["Verdura"][0]["Nombre"])
In [20]:
import json
obj_json = u'{"answer": [42.2], "abs": 42}'
obj = json.loads(obj_json)
print(repr(obj))
In [21]:
class User(object):
def __init__(self, name, password):
self.name = name
self.password = password
alice = User('Alice A. Adams', 'secret')
def jdefault(o):
return o.__dict__
print(json.dumps(alice, default=jdefault))
In [26]:
import json
# lets start with a python structure and convert it to json string
python_object = {'some_text': 'my text',
'some_number': 12345,
'null_value': None,
'some_list': [1,2,3]}
# here we are converting python object to json string
json_string = json.dumps(python_object)
print json_string
print "\n"
# json_string = '{"some_list": [1, 2, 3], "some_text": "my text",
# "some_number": 12345, "null_value": null}'
# api converts a python dictionary to json object and vice versa
# At this point we have a json_string in our hands. Now lets convert it back to pyton structure
new_python_object = json.loads(json_string)
print new_python_object
# new_python_object = {u'some_list': [1, 2, 3], u'some_text': u'my text',
# u'some_number': 12345, u'null_value': None}
In [ ]: