Rancor: JSON

Moin Leutz,

ich hab mal wieder en kelines Problem...

Ich übergebe nach JAVASCRIPT mit JSON Variablen. Diese kommen auch an: allerdings kann ich nicht wie gewünscht auf die Schlüssel zugreifen.

z.B:

var test ={
  "Kreditkarte"   : "Xema",
  "Nummer"        : "1234-5678-9012-3456",
  "Inhaber"       : {
    "Name"        : "Reich",
    "Vorname"     : "Rainer",
    "Geschlecht"  : ""männlich"",
    "Vorlieben"   : [
      "Reiten",
      "Schwimmen",
      "Lesen"
    ],
    "Alter"       : null
  },
  "Deckung"       : 1e+6,
  "Währung"       : "EURO"
}

Ich würde gerne alle Schlüssel ("Kreditkarte", "Nummer", "Inhaber"..) in meinem script ansprechen.

zb so:

alert(test);

Jetzt sollten dann meiner Vorstellung nach alle Schlüssel ausgegeben werden - werden sie aber net, anstelle dessen kommt [objekt: Objekt].

Weiß jemand wie ich an die Schlüssel ran komme?

ps. das hier ist nur ein Beispiel in meinem speziellen fall kenne ich die Schlüssel nicht, da diese dynamisch erstellt werden und sich immer ändern.

  1. [latex]Mae  govannen![/latex]

    Ich würde gerne alle Schlüssel ("Kreditkarte", "Nummer", "Inhaber"..) in meinem script ansprechen.

    zb so:

    alert(test);

    Jetzt sollten dann meiner Vorstellung nach alle Schlüssel ausgegeben werden - werden sie aber net, anstelle dessen kommt [objekt: Objekt].

    Weiß jemand wie ich an die Schlüssel ran komme?

    Mit einer for-in _Schleife.

    Cü,

    Kai

    --
    Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
    selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
    Mein Selfhtml-Kram
    1. [latex]Mae  govannen![/latex]

      Ich würde gerne alle Schlüssel ("Kreditkarte", "Nummer", "Inhaber"..) in meinem script ansprechen.

      zb so:

      alert(test);

      Jetzt sollten dann meiner Vorstellung nach alle Schlüssel ausgegeben werden - werden sie aber net, anstelle dessen kommt [objekt: Objekt].

      Weiß jemand wie ich an die Schlüssel ran komme?

      Mit einer for-in _Schleife.

      Cü,

      Hmm und wie komm ich dann an die Unterpunkte ran z.b: bei Inhaber??

      ps.: wie gesagt ich kenne die schlüssel nicht

      1. Hmm und wie komm ich dann an die Unterpunkte ran z.b: bei Inhaber??

        mit einer weiteren schleife?

      2. [latex]Mae  govannen![/latex]

        Mit einer for-in _Schleife.

        Hmm und wie komm ich dann an die Unterpunkte ran z.b: bei Inhaber??

        ps.: wie gesagt ich kenne die schlüssel nicht

        Grob:
        Schreibe dir eine Funktion, die das JSON-Objekt als Parameter entgegennimmt und mit besagter For-in-Schleife ausliest. Prüfe für jedes Element, ob es ein Objekt[1] ist, wenn ja, rufe die Funktion mit dem Unterobjekt als parameter rekursiv erneut auf.

        Schau dir einfach mal http://json.org/ an, dort gibt es fertige Lösungen.

        [1] das nicht Array oder null ist

        Cü,

        Kai

        --
        Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
        selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
        Mein Selfhtml-Kram
        1. [latex]Mae  govannen![/latex]

          Mit einer for-in _Schleife.

          Hmm und wie komm ich dann an die Unterpunkte ran z.b: bei Inhaber??

          ps.: wie gesagt ich kenne die schlüssel nicht

          Grob:
          Schreibe dir eine Funktion, die das JSON-Objekt als Parameter entgegennimmt und mit besagter For-in-Schleife ausliest. Prüfe für jedes Element, ob es ein Objekt[1] ist, wenn ja, rufe die Funktion mit dem Unterobjekt als parameter rekursiv erneut auf.

          Schau dir einfach mal http://json.org/ an, dort gibt es fertige Lösungen.

          [1] das nicht Array oder null ist

          Cü,

          Kai

          Also die For In Schleife funktioniert ja pronizipiell ganz gut ABER die Schleife wird doch mit den Wertpaaren durchlaufen und net mit den Schlüsseln oder?

          1. [latex]Mae  govannen![/latex]

            Mit einer for-in _Schleife.

            Hmm und wie komm ich dann an die Unterpunkte ran z.b: bei Inhaber??

            ps.: wie gesagt ich kenne die schlüssel nicht

            Grob:
            Schreibe dir eine Funktion, die das JSON-Objekt als Parameter entgegennimmt und mit besagter For-in-Schleife ausliest. Prüfe für jedes Element, ob es ein Objekt[1] ist, wenn ja, rufe die Funktion mit dem Unterobjekt als parameter rekursiv erneut auf.

            Schau dir einfach mal http://json.org/ an, dort gibt es fertige Lösungen.

            [1] das nicht Array oder null ist

            Cü,

            Kai

            Also die For In Schleife funktioniert ja pronizipiell ganz gut ABER die Schleife wird doch mit den Wertpaaren durchlaufen und net mit den Schlüsseln oder?

            Ok ich nehm alles zurück die for in schleife funktioniert, ich hatte es blöder weise mit ner for each schleife umgesetzt....

            Thx

            1. Ok ich nehm alles zurück die for in schleife funktioniert, ich hatte es blöder weise mit ner for each schleife umgesetzt....

              Es gibt in JavaScript (ECMAScript) keine for-each-Schleife.

              Lediglich JavaScript 1.6, ein proprietärer Zusatz von Mozilla, definiert eine for-each-in-Schleife. Damit wirst du aber nirgendwo landen, da sie nur Firefox (d.h. die Gecko-Engine) unterstützt.

              Mathias

          2. Hi,

            bitte zitiere vernuenftig!

            Also die For In Schleife funktioniert ja pronizipiell ganz gut ABER die Schleife wird doch mit den Wertpaaren durchlaufen und net mit den Schlüsseln oder?

            Sowohl, als auch.

            (Wobei die "Schluessel" eigentlich Attribute oder Eigenschaften des Objektes sind.)

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
          3. So wie gehabt: Du kannst alle Objekte (auch Arrays) mit for-in-Schleifen durchlaufen.

            var test = { a: 1, b: 2, c: 3 };  
            for (var i in test) { alert(test[i]; }
            

            Bei Arrays funktioniert das genauso, wobei i in diesem Fall nicht mit "a", "b" und "c", sondern mit 1, 2 und 3 gefüllt ist.

            Gruß, LX

            --
            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: Unusual
            X-Please-Search-Archive-First: Absolutely Yes
    2. Ok ich denke ich hab mich schlecht ausgedrückt:

      Meine JSON übergabe sieht in etwa so aus:

      {"var1":{"var1.1":"1","var1.2":"2","var1.3":"3","var2":["test","test2","test3"]}

      und ich möchte sozusagen die schlüssel var1.1 - var1.3