Skip to content Skip to sidebar Skip to footer

Json.stringify Not Converting Array.object Correctly

I'm having a problem with JSON.stringify I'm trying to pull all the meta tags out of the page and pass them to a firefox worker file to work through them and to return back an obj

Solution 1:

You could use the following:

var metas = document.getElementsByTagName("meta");
var arr = [];
for (var i = 0; i < metas.length; i++) {
    var obj = {};
    for (var j = 0; j < metas[i].attributes.length; j++) {
        var att = metas[i].attributes[j];
        obj[att.name] = att.value;
    }
    arr.push(obj);
}

var jsonMetas = JSON.stringify(arr);
console.log(jsonMetas);​

results in:

[{"http-equiv":"content-type","content":"text/html; charset=UTF-8"},{"content":"width=1024","name":"viewport"},{"charset":"UTF-8"},{"content":"Mozilla Hacks – the Web developer blog","name":"title"}]

Solution 2:

The reason is that document.getElementsByTagName doesn't return JSON, it returns XML. So, you'd need to use something like this to get your desired output:

var jsonMetas = [];
for (i=0 ; i<metas.length ; i++) {
    varthisMeta = {};for (j=0 ; j<metas[i].attributes.length ; j++) {
        thisMeta[metas[i].attributes[j].name] = metas[i].attributes[j].value;
    }
    jsonMetas.push(thisMeta);
}

Output of JSON.stringify(jsonMetas) for this page:

"[{"name":"relativepagescore","content":"0"},{"name":"title","content":"javascript - JSON.stringify not converting array.object correctly - Stack Overflow"}]"

Post a Comment for "Json.stringify Not Converting Array.object Correctly"