Estoy tratando de analizar los datos json de un campo de entrada en mi servidor node.js. Si simplemente tengo el valor 16 como valor en el campo de entrada, simplemente puedo leerlo con request.body.id ( <input type="hidden" id="id" name="id" value="16"/>) . Pero cuando encadeno un json como un valor del campo de entrada y analizo los datos de json, siempre obtengo un error SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) . Pero puedo ver en la consola del navegador mis datos json <input type="hidden" id="id" name="id" value="{" a":0.3,"b":0.5,"c":1.3}"> ¿Por qué no puedo leer el valor del campo de entrada con request.body.id ?
Debe enviar solo los datos JSON al servidor mientras llama al punto final respectivo en la aplicación front-end. No debe enviar el html directamente al punto final del nodo js
La etiqueta
<input type="hidden" id="id" name="id" value="{" a":0.3,"b":0.5,"c":1.3}">contiene los atributos
type="hidden" id="id" name="id" value="{"y algo de basura
a":0.3,"b":0.5,"c":1.3}"porque la primera cita en su JSON cierra el atributo.
Tienes que enmascarar las comillas
<input type="hidden" id="id" name="id" value="{" a":0.3,"b":0.5,"c":1.3}">Después de la aclaración en los comentarios, aquí hay un ejemplo de trabajo:
const json = JSON.stringify({" a":0.3,"b":0.5,"c":1.3}); document.body.innerHTML = `<input value="${json.replaceAll('"', '"')}">`; const input = document.querySelector('input'); console.log(JSON.parse(input.value));