JSFiddle - React, Tailwind, and code Playground
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.1.0/lodash.min.js"></script>
JavaScript
var resp = {"findItemsAdvancedResponse":[
{"ack":["Success"],
"version":["1.13.0"],
"timestamp":["2014-11-16T20:58:14.639Z"],
"searchResult":[
{"@count":"0"}],
"paginationOutput":[
{"pageNumber":["0"],
"entriesPerPage":["100"],
"totalPages":["0"],
"totalEntries":["0"]}],
"itemSearchURL":["http:\/\/www.ebay.co.uk\/sch\/i.html?&_nkw=mytest1"]
}]
};
var flatten = function( obj ) {
var ret = {};
if( String === obj.constructor || Number === obj.constructor ) {
return obj;
}
for(var prop in obj) {
if(!obj.hasOwnProperty(prop)) continue;
if( String === obj[prop].constructor || Number === obj[prop].constructor ) {
ret[prop] = obj[prop];
continue;
}
if( Object.prototype.toString.call( obj[prop] ) === '[object Array]' ) {
if( obj[prop].length==0 )
ret[prop] = null;
if( obj[prop].length==1 && "0" in obj[prop] ) {
ret[prop] = flatten(obj[prop][0]);
} else {
ret[prop] = flatten(obj[prop]);
}
continue; // skip below: all objects are Objects...!
}
if( Object === obj[prop].constructor ) {
ret[prop] = flatten( obj[prop] );
continue;
}
}
return ret;
};
console.log( resp );
resp = flatten( resp );
console.log( resp );
console.log( resp.findItemsAdvancedResponse.ack );