Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

465
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda