Skip to content

Instantly share code, notes, and snippets.

@vivekseth
Last active May 14, 2016 05:17
Show Gist options
  • Save vivekseth/942515e0e51a15be4cf43b027dcc52a6 to your computer and use it in GitHub Desktop.
Save vivekseth/942515e0e51a15be4cf43b027dcc52a6 to your computer and use it in GitHub Desktop.
function convertToJSON(obj) {
function traverse(root, visited, level) {
if (level > 4) {
return '<<'+level+' levels>>';
}
if (!root) {
return '<<null root>>'
}
if (visited.indexOf(root) >= 0) {
return '<<visited>>';
}
visited.push(root)
var data = {}
for (var key in root) {
var value = root[key]
var t = typeof value;
if (t == 'string' || t == 'number' || t == 'boolean') {
data[key] = value;
} else if (t == 'function') {
data[key] = '<<function>>';
} else if (t == 'object') {
if (!value) {
data[key] = null;
} else if (value.toString && (typeof value.toString == 'function') && value.toString().indexOf('Array') >= 0) {
var value_arr = []
for (var j=0; j<value.length; j++) {
value_arr.push(traverse(value[j], visited, level+1))
}
data[key] = value_arr;
} else {
data[key] = traverse(value, visited, level+1);
}
} else {
data[key] = '<<other>>';
}
}
return data;
}
var visited = [];
return traverse(obj, visited, 0);
}
var j = convertToJSON(navigator);
var s = convertToJSON(screen);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment