un poco de un desarrollador junior aquí, tengo un área de texto que recibirá una entrada de una serie de objetos como este ..
[ { utc: "xxxxxx", battery_level: 12, lat: 2345678, lng: 234567, }, { utc: "xxxxxx", battery_level: 12, lat: 2345678, lng: 234567, } ]la entrada del área de texto lo convierte en una cadena como ...
'[\n {\n utc: "xxxxxx",\n battery_level: 12,\n… 12,\n lat: 2345678,\n lng: 234567,\n }\n]'Necesito convertir eso de nuevo en un objeto javascript. Probé JSON.parse que arroja un error 'token u inesperado en la posición 10' la u de utc porque NO es una clave de cadena.
Probé JSON.stringify a JSON.parse que aún devuelve una cadena.
el proyecto está utilizando reaccionar con mecanografiado. Cualquier ayuda sería apreciada.
El problema es que los objetos de JavaScript pueden o no tener comillas, mientras que el estándar JSON requiere comillas dobles para cada nombre de propiedad.
Por esta razón, no puede usar JSON.parse , ya que no es un JSON válido.
Tienes tres alternativas:
eval , que introduciría vulnerabilidades. Usted dijo que los usuarios pueden pegar cualquier cosa en el cuadro de texto, por lo que se desaconseja el uso de evalDe hecho, JSON5 hace exactamente lo que necesitas hacer:
JSON5.parse('[\n {\n utc: "xxxxxx",\n battery_level: 12,\n… 12,\n lat: 2345678,\n lng: 234567,\n }\n]')