Diferencia entre json.load() vs json.loads()

La diferencia entre json.load() vs json.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

JSONPython
objectdict
arraylist
stringstr
number (int)int
number (real)float
trueTrue
falseFalse
nullNone
tabla de conversion de datos json python

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().

with open("json_data.json", "r") as content:
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:

with open("json_data.json", "r") as content:
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….