65 votes

Obtenir les noms de propriété dans les objets JSON

Je voudrais obtenir les noms des propriétés d'un objet JSON pour construire un tableau dynamiquement

exemple:

var obj = { 'fname': 'joe', 'lname': 'smith', 'number': '34' };

for (var i = 0; i < obj.properties.length; i++) {
    alert(' name=' + obj.properties[i].name 
        + ' value=' + obj.properties[i].value);
}

serait alerte

nom=pnom valeur=joe

nom=lname=smith

nom=valeur de nombre=34


ensuite, j'ai pu construire un tableau à l'aide de json comme ceci

var obj = { 'players': [ 
     { 'fname': 'joe', 'lname': 'smith', 'number': '34'} , 
     { 'fname': 'jim', 'lname': 'Hoff', 'number': '12'} , 
     { 'fname': 'jack', 'lname': 'jones', 'number': '84'}   
] };

pour produire...

fname lname nombre

joe smith 34

jim Hoff 12

jack jones 84

Mise à JOUR

merci pour la réponse, j'ai produit une table à partir de la forme d'objets json en utilisant les noms de propriété de l'objet premier de la liste pour les en-têtes

    function renderData() {
        var obj = { 'players': [
            { 'fname': 'joe', 'lname': 'smith', 'number': '34' },
            { 'fname': 'jim', 'lname': 'jones', 'number': '12' },
            { 'fname': 'jack', 'lname': 'Hoff', 'number': '84' } 
            ] };

        var cols = GetHeaders(obj); 

        $('#Output').html(CreateTable(obj, cols));
    }


    function CreateTable(obj, cols) {
        var table = $('<table></table>');
        var th = $('<tr></tr>');
        for (var i = 0; i < cols.length; i++) {
            th.append('<th>' + cols[i] + '</th>');
        }
        table.append(th);

        for (var j = 0; j < obj.players.length; j++) {
            var player = obj.players[j];
            var tr = $('<tr></tr>');
            for (var k = 0; k < cols.length; k++) {
                var columnName = cols[k];
                tr.append('<td>' + player[columnName] + '</td>');
            }
            table.append(tr);
        }
        return table;
    }



    function GetHeaders(obj) {
        var cols = new Array();
        var p = obj.players[0];
        for (var key in p) {
            //alert(' name=' + key + ' value=' + p[key]);
            cols.push(key);
        }
        return cols;
    }

113voto

jldupont Points 31331
for (var key in obj) {
   alert(' name=' + key + ' value=' + obj[key]);

   // do some more stuff with obj[key]
}

38voto

rab Points 1807

En JavaScript 1.8.5, Object.getOwnPropertyNames () retourne un tableau de toutes les propriétés, qui se trouve directement sur un objet donné.

Object.getOwnPropertyNames ( obj )

et une autre méthode Object.keys, qui retourne un tableau contenant les noms de toutes les donnée de l'objet propre énumérable propriétés.

Object.keys( obj )

J'ai utilisé forEach pour les valeurs de la liste et les clés dans obj, même en tant que for (var key in obj) ..

[].forEach.call( Object.keys( obj ), function( key ){    
    console.log( key , obj[key] );
});

Ce sont toutes les nouvelles fonctionnalités dans ECMAScript , les réflexes getOwnPropertyNames, keys ne supporte vieux navigateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X