Tengo una cadena que quiero transformar en un objeto, la cadena se ve así:
const str = `::app{port=”8080” display=”internal” name=”some name” route=”/“}`Quiero transformar esa cadena en un objeto que se vea así:
const obj = { port: "8080", display: "internal", name: "some name", route: "/" } Así que la cadena está formateada en esto era ::name{parameters...} y puede tener cualquier parámetro, no solo port , name ,... ¿Cómo puedo formatear cualquier cadena que se vea así y transformarla en un diccionario?
Traté de hacer una expresión regular para formatear la cadena, pero no pude, el problema también es que el valor podría terminar con ” o con “ , lo que realmente rompe el código que encuentro.
¡Cualquier ayuda sería muy apreciada!
No estoy seguro de cómo es el resto de su conjunto de datos, pero esto debería funcionar para el ejemplo dado. No probé casos extremos como valores que contienen caracteres reservados JSON escapados o algo así:
const str = '::app{port=”8080” display=”internal” name=”some name” route=”/“}'; const objStr = str.match(/{[^}]*}/)[0] .replace(/(?<={)|”|“/g, '"') .replace(/="/g, '":"') .split('" ').join('","'); const dic = JSON.parse(objStr); console.log(dic.port); // 8080