Tengo como entrada una cadena JSON no válida con esta estructura:
{ "Seq_N":66, "Uptime":728, "Hum":33,500000, "Temp (C)":20,129999 }No tengo acceso al código que produce la cadena JSON no válida, por lo que no puedo arreglar la cadena antes de que se genere.
Para que la cadena JSON sea válida, necesito reemplazar el carácter de coma dentro de los campos Hum y Temp con un carácter de punto, pero también necesito mantener los separadores de coma de la cadena JSON (para no romper la sintaxis de JSON)
¿Alguien sabe una función limpia/regex para hacer esto?
Gracias por adelantado
Puedes usar expresiones regulares como esta:
var json = `{ "Seq_N":66, "Uptime":728, "Hum":33,500000, "Temp (C)":20,129999 }`; json = json.replace(/("(Hum|Temp \(C\))":\d+),/g, '$1.'); console.log(json)La anticipación negativa haría el trabajo.
const foo = '{ "Seq_N":66, "Uptime":728, "Hum":33,500000, "Temp (C)":20,129999 }'; const cleanedFoo = foo.replace(/,(?![" ])/g, "."); console.log(JSON.parse(cleanedFoo));La expresión regular significa:
, coincidir con la coma,
(?! solo si no se sigue
[" ] por comillas dobles o espacio. (Sí, este llamado JSON está seriamente mal formado).
Si entiendo la pregunta correctamente, el siguiente código debería hacer el trabajo:
$(".stat-item").each(function () { var inner_context = $(this).text(); $(this).text(inner_context.replace(/[\.]+/g, ",")); });