La diferencia entre json.load() y j
son.loads(), puede a menudo confundirnos cuando operamos con archivos json desde Python.
He aquí en que se diferencian:
json.load()
: deserializa el archivo json, tomando como cadena (string), su contenido y soporta texto y binario, para convertirlo en un objeto Python, siguiendo esta tabla de conversión
JSON | Python |
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
json.load()
deserializa el archivo en si mismo, ya que acepta el objeto file(archivo), por tanto acepta esta forma
with open("/abc/data.json", "r") as content: print(json.load(content))
Esto no podríamos hacerlo con json.loads()
, porque lanzaría un error del tipo:
TypeError: expected string or buffer
json.loads()
Deserializa un string, por tanto al usarlo deberíamos pasarle el contenido del archivo empleando, por ejemplo read()
.
withopen
(
"json_data.json",
"r")
ascontent:
print(json.loads(content.read()))
Esto se debe, a que al emplear la función read()
, estamos leyendo el contenido de la cadena o string, y no el archivo como objeto.
Si intentaramos emplear json.load()
, para deserializar solo el contenido obtendríamos este error:
withopen
(
"json_data.json",
"r")
ascontent:
print(json.load(content.read()))
AttributeError: 'str' object has no attribute 'read'
En este link dejo especificaciones sobre su sintaxis
Dicho de otro modo json.load()
deserializa archivos y json.loads()
deserializa strings.
Espero modestamente que este artículo, sirva de ayuda a alguien.
Gracias
“…. hay que levantarse cada mañana con una esperanza y dormirse cada noche con una meta…“.