Tengo una variable de cadena
let stringValue = "{DATA={VERSION=1.1, STATE=true, STATUS=ONLINE}}" Me gustaría analizarlo para objetar como result donde el result será:
let result = {"DATA":{"VERSION":1.1, "STATE": true, "STATUS": "ONLINE"}} ¿Cómo convertiría un valor de stringValue en un objeto de result para que sea posible acceder a las claves anidadas?
console.log(result.DATA.STATUS)Bajo el supuesto de que las claves y los valores de cadena están completamente en mayúscula:
Usé la expresión regular /[AZ]+/g y .match(regex) para obtener una matriz de cada palabra en mayúsculas en la cadena.
Cree un Set a partir de la matriz para eliminar los duplicados y evitar repetir el siguiente paso en la misma cadena varias veces.
Luego itere sobre cada palabra y reemplácela en la cadena principal por sí misma entre comillas. DATA => "DATA"
Luego reemplace = con :
Y finalmente JSON.prase() y obtenemos el objeto.
let stringValue = "{DATA={VERSION=1.1, STATE=true, STATUS=ONLINE}}"; let regex = /[AZ]+/g let objectStrings = stringValue.match(regex) let uniqueStrings = [... new Set(objectStrings)] uniqueStrings.forEach((string) => stringValue = stringValue.replaceAll(string, '"'+string+'"')); stringValue = stringValue.replaceAll('=', ':'); console.log(JSON.parse(stringValue))Aquí está en JSBin para mostrar que las claves se asignan correctamente sin las comillas.