2016-05-13 3 views
0

Ich habe folgende JSON:ändern Darstellung von JSON-Objekt zu expliziten Schlüssel/Wert-Format

{ 
    "temperature": "22.2", 
    "power": "6", 
    "current": "156" 
} 

und ich brauche es zu dieser expliziten Struktur zu konvertieren:

{ 
    "key": "temperature", 
    "value": "22.2" 
}, 
{ 
    "key": "power", 
    "value": "6" 
}, 
{ 
    "key": "current", 
    "value": "156" 
} 

Gibt es eine elegante, einfacher und schneller Weg dies zu tun?

Best, thx

Antwort

5
var newStructure = Object.keys(obj).map(function(key){ 
    return {'key':key, 'value':obj[key]} 
}) 

Beispiel

var obj = { 
 
    "temperature": "22.2", 
 
    "power": "6", 
 
    "current": "156" 
 
} 
 

 
var arr = Object.keys(obj).map(function(key){return {'key':key,'value':obj[key]}}) 
 

 
console.log(arr)

+0

Demo erstellen, um das Live-Ergebnis zu sehen. – Mohammad

+1

Wenn Sie die Pfeilnotation verwenden, können Sie einfach 'Object.keys (obj) .map (Schlüssel => ({key, value: obj [key]}))' [JSFiddle] (https://jsfiddle.net/ bm1hs5v5 /) – 4castle

+0

@ 4castle wahr, ich vermeide normalerweise die Verwendung von Pfeilen, es sei denn, die Frage hat sie mit neuem ecmscript markiert. Fühlen Sie sich frei, meine Antwort hinzuzufügen oder Ihre eigenen obwohl! – juvian

2

Object.hashToKeyValuePairs = function (hash) { 
 
    var ret = []; 
 
    for (var i in hash) 
 
    ret.push({ key: i, value: hash[i]}); 
 
    return ret; 
 
}; 
 

 
// example 
 
document.body.innerHTML = JSON.stringify(
 
    Object.hashToKeyValuePairs({ a: 1, b: 2, c: 3 }) 
 
);

+0

Ihre Demo funktioniert nicht. Repariere es. – Mohammad

+0

Ah ok, aber es scheint auf Google Chrome zu arbeiten ... –

Verwandte Themen