Necesito convertir esta cadena en objeto

var str = "res=[xyz=name,abc=address]";

Necesito debajo de la salida:

var obj = {xyz: "name",abc:"address"}

Intenté convertir esto usando json.parse y dividir pero no puedo obtener el resultado. ¿Alguien puede ayudarme a hacer esto?

-5
parithi info 10 sep. 2018 a las 18:10

3 respuestas

La mejor respuesta

Una implementación más:

//str format "res=[xyz=name,abc=address]"
function stringToObject(str){
  const extractedStr = str.substring(str.indexOf("[")+1,str.indexOf("]")-1);
  return extractedStr.split(",").reduce((acc,keyVal)=>{
    acc[keyVal.split("=")[0]] = keyVal.split("=")[1];
    return acc;
  },{});
}

console.log(stringToObject("res=[xyz=name,abc=address]"));
0
Avinash 10 sep. 2018 a las 15:28

Aquí hay una manera de hacerlo:

//  format your input like this, comma separated, and key=val
const str = "xyz=name,abc=address"
const obj = str.split(',').reduce((acc, keyVal) => {
  const [key, val] = keyVal.split('=')
  acc[key] = val
  return acc
}, {})

console.log(obj)
// { xyz: "name", abc: "address" }
0
mplungjan 10 sep. 2018 a las 17:13

Este código funciona con la cadena dada. También es muy legible para novatos

var str = "res=[xyz=name,abc=address]";
str = str.split("res=")[1]
  .replace("[",'{"')
  .replace("]",'"}')
  .replace(/=/g,'":"')
  .replace(/,/g,'","');

res = JSON.parse(str);
console.log(str,"\n",res);
1
mplungjan 10 sep. 2018 a las 17:12