faire json de la table

Je veux faire un json spécifique à partir de la table. J'ai une table, qui a des rangées et 4 colonnes. Voici ma table Je veux construire un jsonarray depuis la table. La première valeur dans la colonne de gauche est la clé de json et la dernière valeur dans la colonne de droite est une valeur de json.

Je veux dire que je veux obtenir de la table jsonarray, il doit ressembler à

json_from_form = [{color: 'id', 
          name: "mouse",
          x: "table",
          y: "book"}];

J'ai essayé de construire JSON, mais j'ai un problème avec la structure et la définition d'une clé dans l'objet JSON. S'il vous plaît, aidez-moi à construire la bonne structure de l'objet JSON.

var json_from_form_tmp = {};
$('#table').find('tbody tr').each(function (i) {
    //var name = $(this).find('td:first').text(); 
    json_from_form_tmp[i] = {
        imd: $(this).find('td:eq(3) input').val()
    };
});
console.log(json_from_form_tmp);

Voici ma DEMO

0
ajouté édité
Vues: 1
vérifier ce lien jsfiddle.net/dGPks
ajouté l'auteur Nitin Varpe, source

2 Réponses

Vous devriez utiliser la fonction-map de jQuery pour cela, voici un exemple:

$(function() {    
    var m = $("table tr").map(function (index, e) {        
        return {
            color: $(e).children().eq(0).text(),
            name: $(e).children().eq(1).text()
        }
    }).get();
});

Où m sera un tableau d'objets tel que défini dans la fonction de la carte.

0
ajouté

Pour définir une propriété de l'objet (json_from_form_tmp), utilisez la notation ['propertyName'].

//get the name of the property from the first column     
var name = $(this).find('td:first').text();

//use that name as the name of the property. Your value fetch was right!
json_from_form_tmp[name] = $(this).find('td:eq(3) input').val(); 

Voici votre violon avec une petite modification.

http://jsfiddle.net/bMzq8/32/

0
ajouté
Je vous remercie!! c'est une bonne idée! ça marche =)
ajouté l'auteur toshkaexe, source