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

257
Visualizações
SyntaxError: token inesperado "en JSON en la posición 0 en stringify

He visto esta pregunta varias veces aquí, pero nunca con el carácter ".

Para aclarar, este no es mi código que está generando el error, esto es lo que obtengo de una API.

Mi primer intento:

Uso https://reqbin.com/ y la solicitud funciona perfectamente ( lo que hice )

Mi segundo intento:

Decido mover esto para que se ejecute mediante programación para usarlo en el desarrollo.

En ios hay una aplicación llamada scriptable que te permite ejecutar javascript

documentos para su objeto de solicitud

yo uso el codigo

 let req = new Request("https://support.readaloud.app/ttstool/createParts"); req.method = "post"; req.headers = {"Content-Type": "application/json" }; var data = '[{"voiceId":"Amazon British English (Brian)","ssml":"<speak version=\"1.0\" xml:lang=\"en-GB\">' + "Hello" + '</speak>"}]'; req.body = JSON.stringify(data); let res = await req.loadString();

Donde res debería responder con ["id"] como reqbin

Lamentablemente no lo hace y vuelve

 SyntaxError: Unexpected token " in JSON at position 0 at JSON.parse (<anonymous>) at createStrictSyntaxError (/home/ec2-user/readaloud/webservices/node_modules/body-parser/lib/types/json.js:160:10) at parse (/home/ec2-user/readaloud/webservices/node_modules/body-parser/lib/types/json.js:83:15) at /home/ec2-user/readaloud/webservices/node_modules/body-parser/lib/read.js:128:18 at AsyncResource.runInAsyncScope (node:async_hooks:201:9) at invokeCallback (/home/ec2-user/readaloud/webservices/node_modules/raw-body/index.js:231:16) at done (/home/ec2-user/readaloud/webservices/node_modules/raw-body/index.js:220:7) at IncomingMessage.onEnd (/home/ec2-user/readaloud/webservices/node_modules/raw-body/index.js:280:7) at IncomingMessage.emit (node:events:538:35) at endReadableNT (node:internal/streams/readable:1345:12)

Si puedes ayudar te lo agradecería mucho.

Gracias

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

El error se debe a que el analizador JSON está muy desactualizado y no es compatible con JSON, donde el tipo de datos de nivel superior es una cadena. (La especificación original para JSON solo permitía objetos y matrices, pero se cambió para permitir cualquier tipo de datos).

Sin embargo, no debería enviar un texto JSON donde el elemento de nivel superior es una cadena en primer lugar.

 var data = '[{"voiceId":"Amazon British English (Brian)","ssml":"<speak version=\"1.0\" xml:lang=\"en-GB\">' + "Hello" + '</speak>"}]';

Aquí está construyendo manualmente una cadena de JSON (aunque tiene errores porque algunas comillas no se escapan correctamente).

 req.body = JSON.stringify(data);

Y luego crea una cadena de JSON que representa la cadena anterior.


No hagas eso. Cree una estructura de datos de JavaScript regular (es decir, una matriz), no una cadena.

Luego, convierta la matriz a JSON con JSON.stringify .

También recomiendo aplicar los mismos principios a la creación de XML (es decir, no mezclar cadenas).


 const doc = document.implementation.createDocument(null, "speak"); const speak = doc.documentElement; speak.setAttribute("version", "1.0"); speak.setAttribute("xml:lang", "en-GB"); speak.appendChild(doc.createTextNode("Hello")); const xml = new XMLSerializer().serializeToString(speak); const data = [{ voiceId: "Amazon British English (Brian)", ssml: xml }]; const json = JSON.stringify(data); console.log(json);

about 4 years ago · Juan Pablo Isaza Relatório

0

intente establecer la variable sin comillas y arréglela un poco para que quede así

 var data = [{"voiceId":"Amazon British English (Brian)","ssml":"<speak version=\"1.0\" xml:lang=\"en-GB\">Hello</speak>" }];
about 4 years ago · Juan Pablo Isaza Relatório

0

let req = new Request("https://support.readaloud.app/ttstool/createParts"); req.method = "POST"; req.headers = {"Content-Type": "application/json" }; var data = [ { "voiceId":"Amazon British English (Brian)", "ssml":"<speak version=\"1.0\" xml:lang=\"en-GB\">" + "Hello" + "</speak>" }] req.body = JSON.stringify(data); let res = await req.loadString(); console.log(res);
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