# JSON - Array/Objekt benutzen



## Noeden (24. März 2011)

Hallo Leute, ich bin ein wenig verwirrt!

Ich habe ein PHP-Skript welches folgenden Code erstellt (per echo)


```
[
	{
		"Oberpunkt" : 
		[
			{
				"Unterpunkt":
				[
					{
						"Detail1" : "Wert1",
						"Detail2" : "Wert2"
					},
					{
						"Detail3" : "Wert3",
						"Detail4" : "Wert4"
					}
				]
			}
		]
	}
	{"Oberpunkt2" : //Hier die gleiche Hierarchie}
]
```


Das ist jetzt nur exemplarisch, eigentlich ist noch eine Stufe mehr drin und viel mehr Werte, aber das sollte ja egal sein. 

Meine Fragen: 

Womit empfange ich das jetzt (ist eine AJAX-Abfrage bei der auch etwas übermittelt werden muss)

Soll ich das jetzt per jQuery.getJSON oder einfach per $.post oder mit der ajaxmethode .... ich weiß auch nicht :-D

Wie löse ich das jetzt auf wenn es ankommt?


```
var obj;
function (data){
\t obj = jQuery.parseJSON(data);
}
```

so? Was bekomme ich dann? das Array, in dem die Objekte sind? und dann? 
Ich brauch sowohl 'Oberpunkt' als auch das Array dahinter ... und so weiter.

Steige da leider gerade gar nicht durch 

DANKE DANKE DANKE schonmal


----------



## Quaese (24. März 2011)

Hi,

du erhälst eine Kombination aus Arrays und Objekten. Um auf Teile davon zugreifen zu können, musst du dich durch die unterschiedlichen Hierarchieebenen navigieren.

In deinem Beispiel:
Array -> Objekt -> Array -> Objekt -> Array -> Objekt

Beispiel: Auf den Wert zuzugreifen, der in *Detail1* hinterlegt ist

```
obj[0].Oberpunkt[0].Unterpunkt[0].Detail1
```
oder

```
obj[0]['Oberpunkt'][0]['Unterpunkt'][0]['Detail1']
```
Mehr Informationen findest du unter json.org.

Ciao
Quaese


----------



## Noeden (24. März 2011)

Hi, 
danke schonmal. Dass es eine MIschung aus Arrays und Objekten ist wusste ich schon, hatte das ja erstellt, aber dennoch danke. 
Also frage ich per $.post ab, und die ankommenden Daten parse ich mit parseJSON und dann benutze ich es, wie Du oben gesagt hast. Ich starte mit objekt[0] (Array aus den Oberobjekten) und arbeite mich mit Punkten die Ebenen runter (weil es Objekte sind und die Arrays nummeriere ich einfach durch. Ich hoffe es klappt, sonst bin ich so frei mich hier nochmal zu melden. 

Danke 

PS: Eigentlich hätte ich das mit einem kühlen Kopf auch selber machen können, den hatte ich aber leider nicht :-D Ich danke dir


----------



## Noeden (24. März 2011)

Ich musste gerade noch den Code validieren, deswegen hat es was gedauert. Mein Problem ist, ich brauche auch den Wert "Oberpunkt" Also, dass der mir Oberpunkt ausgibt nicht nicht das Array von "Oberpunkt". Ist das auch möglich oder muss ich das JSON-Objekt umbauen?

Danke

EDIT: Ich schreibe gerade den JSON-Code um, also hat es sich erledigt, dennoch ein herzliches Danke


EDIT: Es funtioniert doch nicht. Ich habe jetzt einfach mein Assoziatives Array genommen und in php json_encode($array) drauf angewendet. 

Jetzt meckert jQuery: 



> Fehler: JSON.parse
> Quelldatei: http://localhost/js/jquery-1.5.min.js
> Zeile: 16



Die JSON sieht so aus: 

```
{"Jura":{"Zivilrecht":{"BGB AT":{null:[{"Titel":null,"Wissensstufe":"2","Link":"blalink","ID":"1"}],"Stellvertretung":[{"Titel":"Definition: Stellvertretung","Wissensstufe":"1","Link":"link2","ID":"2"}]}}},"Programmieren":{"Webseiten":{"PHP":{"Variablen":[{"Titel":"Deklaration","Wissensstufe":"2","Link":"prolink","ID":"3"}]}}}}
```

Das Array: 

```
(
    [Jura] => Array
        (
            [Zivilrecht] => Array
                (
                    [BGB AT] => Array
                        (
                            [Willenserklärungen] => Array
                                (
                                    [0] => Array
                                        (
                                            [Titel] => Definition: Willenserklärung
                                            [Wissensstufe] => 2
                                            [Link] => blalink
                                            [ID] => 1
                                        )

                                )

                            [Stellvertretung] => Array
                                (
                                    [0] => Array
                                        (
                                            [Titel] => Definition: Stellvertretung
                                            [Wissensstufe] => 1
                                            [Link] => link2
                                            [ID] => 2
                                        )

                                )

                        )

                )

        )

    [Programmieren] => Array
        (
            [Webseiten] => Array
                (
                    [ PHP ] => Array
                        (
                            [Variablen] => Array
                                (
                                    [0] => Array
                                        (
                                            [Titel] => Deklaration
                                            [Wissensstufe] => 2
                                            [Link] => prolink
                                            [ID] => 3
                                        )

                                )

                        )

                )

        )

)
```


Anscheinend hat die Funktion auch noch Probleme mit Umlauten. Die muss ich wohl vorher escapen. Aber warum bitte meckert :


```
<?php
    require_once ("config.php");
    /*Leistenaufbau.php holt das Array*/
    echo '$.post("action/Leistenaufbau.php",
           {
    ';          if(isset($_SESSION['benutzer'])){
                    echo 'Angemeldet: 1';
                }else{
                    echo 'Angemeldet: 0';
                }
    echo   '}, function(data){
            jQuery.parseJSON(data);
            alert (data);
           }
        );
    ';
?>
```

 Danke, weiß auch nicht, wie ich weiter an den Fehler rangehen soll. Für mich sieht die JSON-Syntax richtig aus


----------

