user1475195
user1475195

Reputation: 59

Browse a JSON object using jquery

I have one json object constructed as follows:

<?
$t['w'][$id]['marchin']=$machin;
$t['w'][$id]['c'][$id_com]['machin']=$machin;    
echo json_encode($t);
?>

I browse the object like this

// here i access to all the $t['w'][$id]

$.each(data.w, function(k,v){

              var that=this;
              doSomething();

              // now i want to access to all the $t['w'][$id]['c']
               $.each(that.c, function(k1,v1){
                     doSomething();       
               });

});

but here at the second each jquery make an error .. How to access all $ t ['w'] [$ id] ['c']?!

thank you


Ok i tried :

              $.each(data.w, function(k,v){
                  var that = $.parseJSON(this);
                        doSomething();

                    $.each(that[k]['c'], function(k1,v1){
                        doSomething();

                 });

       });

but it does not work again,

here's an example of my json,

{"w":
   {"3":
      {"test":"test","c":
        {"15":
           {"test2":"test2"}
        }
      }
    }
}

Upvotes: 0

Views: 1016

Answers (2)

Stphane
Stphane

Reputation: 3456

Data ...

var data = {"w":
   {"3": {
       "test":"test",
       "c": {
          "15": {"test2":"test2"}
       }
      }
    }
};

Loop ...

$.each(data.w, function(key, value){
    // you are now lopping over 2nd dimension
    // On each loop, 'key' will be equal to another [$id] value
    // since you know you'd like to crawl 'c' sub entry, you can reference it
    // and loop over it
    $('body').append('<h3>'+key+'</h3>');
    if( this['c'] )
    $.each(this['c'], function(k,v){
        // Here you have access to ['c'][...]
        $('body').append('<span>'+k+'</span>');
    });
}); 

Upvotes: 1

weexpectedTHIS
weexpectedTHIS

Reputation: 3376

You can do this without .each at all:

var hsh = $.parseJSON(data.w);

for (var i in hsh) {
  var that = hsh[i];
  doSomething();

  for (var j in hsh[i].c) {
    doSomething();
  }
}

Upvotes: 0

Related Questions