Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

464
Vistas
¿JSON no válido en el campo multiparte 'operaciones' en formData en la próxima aplicación js?

Tengo una mutación como esta-

 mutation signUp($avatar: Upload!) { signUp( avatar: $avatar input: { name: "Siam Ahnaf" email: "siamahnaf198@aol.com" password: "12345678" } ) { message token } }

Para esto, he enviado una solicitud de la siguiente aplicación js como esta:

 var formData = new FormData(); formData.append('operations', '{ "query": "mutation($file: Upload!) {signUp(avatar: $file, input: {name: "Siam Ahnaf", email: "siamahnaf198@yahoo.com", password: "siam1980"}){message, token}}", "variables": { "file": null } }'); formData.append('map', '{ "0": ["variables.file"] }'); formData.append('0', Image); await axios({ url: "http://localhost:3001/graphql", method: "post", data: formData, Headers: { 'Accept': 'application/json' } }) .then(response => console.log(response)) .catch(error => console.log(error));

Ahora recibo un error como: JSON no válido en el campo multiparte de 'operaciones'

Pero no puedo entender dónde me equivoco en la 'operación' json. Por favor, ayúdame.

Adelanto gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Estoy copiando mi respuesta aquí de la pregunta casi duplicada en caso de que se cierre:

Si tiene comillas dentro de comillas y desea ejecutar JSON. JSON.parse en él, debe escapar de ellas (como han mencionado otros). Sin embargo, en su duplicado de seguimiento, no puede simplemente escapar de las comillas. Tienes que escapar de ellos dos o tres veces.

Aquí está la explicación:

 '{ "query": "mutation($file: Upload!) {signUp(avatar: $file, input: {name: \"Siam Ahnaf\", email: \"siamahnaf198@yahoo.com\", password: \"siam1980\"}){message, token}}", "variables": { "file": null } }'

Cuando esto es analizado por JavaScript (porque está dentro de comillas simples), toma \" y se da cuenta de que está tratando de escapar de ellos (innecesariamente, ya que no era una comilla simple), por lo que lo convierte en " . Ahora el analizador ve el valor dentro de las comillas (escapado):

 { "query": "mutation($file: Upload!) {signUp(avatar: $file, input: {name: "Siam Ahnaf", email: "siamahnaf198@yahoo.com", password: "siam1980"}){message, token}}", "variables": { "file": null } }

Como puede ver, el resaltador de sintaxis cambia de color a la mitad, porque las comillas ya se escaparon.

Para obtener el resultado deseado, debe hacer que el procesamiento de la PRIMERA cadena termine con barras invertidas, por lo que también debe escapar de THE BACKSLASHES:

 '{ "query": "mutation($file: Upload!) {signUp(avatar: $file, input: {name: \\"Siam Ahnaf\\", email: \\"siamahnaf198@yahoo.com\\", password: \\"siam198\\"}){message, token}}", "variables": { "file": null } }'

Ahora la pregunta es si necesita DOS barras invertidas o TRES. La respuesta aquí es que, dado que su cadena EXTERNA usa comillas simples, NO necesita escapar TAMBIÉN de las comillas dobles internas, por lo que solo necesita dos barras invertidas por cada comilla doble que desee conservar. Si estuviera usando comillas dobles para su cadena externa, tendría que escapar triplemente en lugar de solo doble, o su comilla tampoco se escaparía, y la cadena original no sería válida.

Regla general: si está tratando de escapar del MISMO tipo de cita que está usando para su cadena, triple escape. Si está tratando de escapar de un tipo diferente, doble escape.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda