Home > Back-end >  how to convert {obj:"{objects}"} into array with json object inside it
how to convert {obj:"{objects}"} into array with json object inside it

Time:11-29

I had % in my cookie and I found following code for it and got the data below after implying that code

var cookies = (document.cookie);
var output = {};
cookies.split(/\s*;\s*/).forEach(function (pair) {
    pair = pair.split(/\s*=\s*/);
    var name = decodeURIComponent(pair[0]);
    var value = decodeURIComponent(pair.splice(1).join('='));
    output[name] = value;
});
console.log(output);

The data console is down below;

{"objName":"[{"key":1,"key2":"value 123","key3":"value123"},{"key":1,"key2":"value 123","key3":"value123"}]"}

I have the data as shown above, What I want is to objName into array and remove "" from in front of [] array barckets

objName=[{"key":1,"key2":"value 123","key3":"value123"},{"key":1,"key2":"value 123","key3":"value123"}]

CodePudding user response:

Used this function from w3schools insted of function mentioned in the question to get cookie it worked ! https://www.w3schools.com/js/js_cookies.asp

function getCookie(cname) {
  let name = cname   "=";
  let decodedCookie = decodeURIComponent(document.cookie);
  let ca = decodedCookie.split(';');
  for(let i = 0; i <ca.length; i  ) {
    let c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

CodePudding user response:

As far as I understand, you are trying to get cookie values, you can try this code and handle the returned array as you need. You can try this solution and let me know if it works.

var cookies = document.cookie.split(';').reduce(
    (cookies, cookie) => {
      const [name, val] = cookie.split('=').map(c => c.trim());
      cookies[name] = val;
      return cookies;
    }, {});
console.log(cookies);
  • Related