jsjj: json richtig parsen

Hallo!
Ich habe einen JSON String der so aufgebaut ist:

  
  
{"156644":{ "name":"name1",  
          "street":"street1",  
          "city":"city1"  
"68656":{  "name":"name2 ",  
          "street":"street2",  
          "city":"city1"  
"388655":{ "name":"name3",  
          "street":"street3",  
          "city":"city1"  
"4564":{  "name":"name4",  
          "street":"street4",  
          "city":"city1"  
"6333":{  "name":"name5",  
          "street":"street5",  
          "city":"city1"}}  
  

Der Json kann beliebig viele Einträge haben.
Nun würde ich gerne in meinem Script die einzelnen Daten auslesen.

Hierzu mache ich folgendes:

  
  
var object = eval(myjson);  
  
  
for (var ii=0; ii<object.length; ii++){  
alert(ii);  
}  
  

Doch bis dort hin kommt er gar nicht, bzw fliegt davor schon raus.
wenn ich mir noch vor der for Schleife object.length ausgeben lasse meint er dass es undefined ist.
Was habe ich falsch gemacht?

  1. Guten Morgen!

    Hallo!
    Ich habe einen JSON String der so aufgebaut ist:

    {"156644":{ "name":"name1",
              "street":"street1",
              "city":"city1"
    "68656":{  "name":"name2 ",
              "street":"street2",
              "city":"city1"
    "388655":{ "name":"name3",
              "street":"street3",
              "city":"city1"
    "4564":{  "name":"name4",
              "street":"street4",
              "city":"city1"
    "6333":{  "name":"name5",
              "street":"street5",
              "city":"city1"}}

    
    >   
      
    In meinen Augen fehlt hier jeweils das Schließen der per ID bekannten Objekte, oder?  
      
      
    ~~~javascript
      
      
    {"156644":{ "name":"name1",  
              "street":"street1",  
              "city":"city1"},  
    "68656":{  "name":"name2 ",  
              "street":"street2",  
              "city":"city1"},  
    "388655":{ "name":"name3",  
              "street":"street3",  
              "city":"city1"},  
    "4564":{  "name":"name4",  
              "street":"street4",  
              "city":"city1"},  
    "6333":{  "name":"name5",  
              "street":"street5",  
              "city":"city1"}}  
      
    
    

    So müsste es meiner Meinung nach sein.

    Peter

    1. Sorry, mein Fehler.
      Ich habe den JSON etwas gekürzt, da er noch um einiges mehr Daten hat.
      Geschlossen sind sie alle.

  2. Hi,

    wenn ich mir noch vor der for Schleife object.length ausgeben lasse meint er dass es undefined ist.
    Was habe ich falsch gemacht?

    Du gehst davon aus, die Kurzschreibweise "{...}" erzeuge ein Array. Statt dessen handelt es sich um ein Objekt. Verwende den in-Operator und prüfe mit hasOwnProperty(), ob die gefundenen Eigenschaften auch die speziell erzeugten sind.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. Hallo,

    Der Json kann beliebig viele Einträge haben.
    Nun würde ich gerne in meinem Script die einzelnen Daten auslesen.

    Hierzu mache ich folgendes:

    var object = eval(myjson);

      
    Wegen dem bekannten Spruch "eval is evil" könnte man auch [ohne eval() parsen](http://www.json.org/json_parse.js).  
      
    Gruß, Don P