Debug School

rakesh kumar
rakesh kumar

Posted on

Conversion of JSON-formatted string into a JavaScript object to to iterate over its properties

here it is format of array of strings i want to convert array of object using JSON.parse

var data = [
  {
    "user_id": 1,
    "social_sites": { facebook: 'url1', twitter: 'url2', instagram: null },
    "social_price": { facebook: 20, twitter: 15, instagram: null }
  },
  {
    "user_id": 2,
    "social_sites": { facebook: 'url3', twitter: 'url4', instagram: 'url5' },
    "social_price": { facebook: 25, twitter: 18, instagram: 12 }
  },
  // ... other user objects
];
Enter fullscreen mode Exit fullscreen mode

In javascript

function extractNonNullSocialSites(user) {
    var socialSiteObject = JSON.parse(user.social_site);
    var nonNullSocialSites = [];
    for (var key in socialSiteObject) {
        if (socialSiteObject[key] !== null) {
            nonNullSocialSites.push({ site: key, site_url: socialSiteObject[key] });
        }
    }
    return nonNullSocialSites;
}
Enter fullscreen mode Exit fullscreen mode

In Jquery

function extractNonNullSocialSites(user) {
    var socialSiteObject = JSON.parse(user.social_site);
    var nonNullSocialSites = [];

    $.each(socialSiteObject, function(site, url) {
        if (url !== null) {
            nonNullSocialSites.push({ site: site, site_url: url });
        }
    });

    return nonNullSocialSites;
}
Enter fullscreen mode Exit fullscreen mode

Error Encountered

// Assuming user.social_site is a JSON-formatted string
user.social_site = '{"facebook": "https://www.facebook.com", "twitter": null, "instagram": "https://www.instagram.com"}';
Enter fullscreen mode Exit fullscreen mode
// Without JSON.parse, you would be working with a string
console.log(user.social_site); // '{"facebook": "https://www.facebook.com", "twitter": null, "instagram": "https://www.instagram.com"}'
Enter fullscreen mode Exit fullscreen mode
// With JSON.parse, you get a JavaScript object
var socialSiteObject = JSON.parse(user.social_site);
console.log(socialSiteObject); // {facebook: "https://www.facebook.com", twitter: null, instagram: "https://www.instagram.com"}
Enter fullscreen mode Exit fullscreen mode

If you try to iterate over the string directly without parsing it into an object, you will likely encounter errors or unexpected behavior, as the string itself doesn't have properties that you can access like an object.

Top comments (0)