Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error Json #359

Open
7 tasks done
blancaortuzarm opened this issue Dec 10, 2021 · 1 comment
Open
7 tasks done

Error Json #359

blancaortuzarm opened this issue Dec 10, 2021 · 1 comment
Assignees
Labels
Tarea 3 Dudas sobre la T3

Comments

@blancaortuzarm
Copy link

blancaortuzarm commented Dec 10, 2021

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

  • Leí las reglas del foro (https://github.com/IIC2233/syllabus/issues/1)
  • Busqué en las issues si ya preguntaron mi duda y no encontré nada parecido (https://github.com/IIC2233/syllabus/issues)
  • Revisé el compilado de dudas de la tarea y no encontré una issue similar a la mía (Duda SOLES_ROBADOS Syllabus#293)
  • Mi duda no se trata sobre una librería, built-in o mala práctica, ya que eso se pregunta en la issue creada para ello.
  • Mi duda no se trata de un tema administrativo o personal, ya que en ese caso debo contactar a mi profe, al Jefe de Bienestar o al correo del curso (https://iic2233.github.io/contacto/)
  • Utilizaré un título descriptivo y llenaré correctamente esta plantilla
  • De ser necesario, solo colocaré código simple que permita explicar mi problema o duda, ya que compartir código de esta evaluación puede ser considerado copia

Hola! Pasa que cuando intento conectar a un cuarto cliente, me aparece el siguiente error cuando intento decodificar el mensaje y no entiendo qué está mal.

File "C:\Users\HP\AppData\Local\Programs\Python\Python38\lib\json_init_.py", line 357, in loads
return _default_decoder.decode(s)
File "C:\Users\HP\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\HP\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 77 (char 76)

De antemano, gracias

@blancaortuzarm blancaortuzarm added the Tarea 3 Dudas sobre la T3 label Dec 10, 2021
@fernandosmither fernandosmither self-assigned this Dec 10, 2021
@fernandosmither
Copy link
Member

Hola @blancaortuzarm !

Al ojo me parecería que es un error bastante común cuando intentas cargar un string json en python. Por ejemplo:

import json

x =  """{ "Nombre":"Pepino"}"""
y =  """{ "Nombre":"Pepino\""}"""
data = json.loads(x)
data = json.loads(y)

Si corres el snipper anterior te darás cuenta de que el programa lee el string json "x" sin problemas, mientras que al intentarlo con "y" se cae, ya que en este intentamos añadir un backlash al final del nombre.

En este caso en particular, para evitar la aparición del carácter que ocasiona el problema, podemos transformar el string a un raw-string. De la misma manera que utilizamos una f antes de las comillas para utilizar un f-string, un raw-string comienza un una r, y este tipo de string trata los backlash como el carácter en sí, y no como un escapador de caracteres.

La otra forma de arreglarlo, sería escapar el backlash con otro backlash.

import json

x =  """{ "Nombre":"Pepino"}"""
y =  r"""{ "Nombre":"Pepino\""}"""
z =  """{ "Nombre":"Pepino\\""}"""
data = json.loads(x)
data = json.loads(y)
data = json.loads(z)

Te darás cuenta que ahora el código no se cae mientras "y" y "z" logran lo mismo.

Espero que el ejemplo anterior aplique a tu caso, sino, te invito a seguir preguntando y compartirnos el string que está causando que el programa se caiga (hint: utiliza print antes del json loads)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Tarea 3 Dudas sobre la T3
Projects
None yet
Development

No branches or pull requests

2 participants