Welche Datenstruktur verwenden?

Wow... das sieht gut aus. Da ich noch in der Einarbeitungsphase bin, kann ich nicht allzu viel dazu sagen. Aber ich werde das definitiv vorschlagen - gefällt mir gut. Besten Dank dafür!
Das heißt also ich würde in Java die DB auslesen und eine JSON Datei erzeugen, mit meiner nötigen Struktur. Diese würde ich dann per JavaScript einlesen und weiter verarbeiten... cool :)

Gruß

IT
 
Das heißt also ich würde in Java die DB auslesen und eine JSON Datei erzeugen, mit meiner nötigen Struktur. Diese würde ich dann per JavaScript einlesen und weiter verarbeiten... cool :)

Genau. Aber da praktisch jedes JSON auch valides JavaScript ist, ist das Einlesen ganz simpel. Schreib ein "var x = " vor das JSON und binde es als Skript Datei ein. Das war's schon ;). Kein Parsen nötig, das macht der Browser nativ.

Javascript:
var x =
{
	"ID": 1,
	"NodeName": "foobar1",
	"children":
	[
		{
			"ID": 11,
			"NodeName": "children1",
			"children": [],
			"attributes": []
		},
		{
			"ID": 21,
			"NodeName": "children2",
			"children": 
			[
				{
					"ID": 111,
					"NodeName": "grandchildren1",
					"children": [],
					"attributes": []
				}
			],
			"attributes": []
		}
	],
	"attributes":
	[
		{
			"ID": 1337,
			"Name": "foo",
			"Value": "bar"
		},
		{
			"ID": 563,
			"Name": "woot",
			"Value": "baz"
		}
	]
}
;

Und der Zugriff ist ganz einfach.

Javascript:
alert(x['children'][1]['children'][0]['NodeName']);
//Oder auch
alert(x.children[1].children[0].NodeName);

Gibt "grandchildren1" aus.

Den Baum traversieren kannst du auch ganz einfach. Z.B. hier mal rekursiv.

Javascript:
function traversal(tree) {
	alert(tree['NodeName']);
	
	//Alle Kinder
	for(var i = 0; i < tree.children.length; i++) {
		traversal(tree.children[i]);
	}
}

traversal(x);

Gibt "foobar1", "children1", "children2" und dann "grandchildren1" aus.
 
Aha... wow, das nenne ich mal praktisch :)
Wobei das var x = ... dann noch im Java Code davor gesetzt wird, das habe ich doch richtig verstanden? Durch die Skriptdatei Einbindung wird das dann als normale Variable in einer .jsp Datei eingebunden. Genial :D Ich glaube die Lösung wirds wohl werden, gefällt mir, zumal die Traversierung auch einfach ist - das brauche ich nämlich später.
Achja, nur der Vollständigkeit halber: Ich werde wahrscheinlich die Baumimplementierung (zur Darstellung wohlgemerkt) von Mootools:
http://mifjs.net/tree/
nehmen.

Gruß & Danke

IT
 
Hallo zusammen,

ich habe vorhin mal kurz nachgefragt: Es soll definitiv nicht über eine Datei laufen - also nur per Stream. Auf der JSON Website (http://json.org/) werden ganz unten unter dem Punkt "Java" mehrere APIs angeboten - sogar sehr viele. Hat jemand damit Erfahrung und kann eine Empfehlen?

Gruß & Danke

IT

€dit: Achso: Ich muss übrigens Java Objekte (bekomme ich von hibernate) in JSON konvertieren.

$dit2: Ich glaube org.JSON tut es schon. Ich habe mal etwas gesucht und man kann, wenn ich es richtig verstehe, das JAVA Objekt einfach später mit einem String repräsentieren, was dann ja in JSP weiterverwendet werden kann.
 
Zuletzt bearbeitet:
So, hier mal eine Rückmeldung - wenn auch später als versprochen:
Wir werden wahr. auf JSON verzichten, da JsTree mit <ul> und <li> umgehen kann - und wir dem Chef das schmackhaft machen konnten. Das ist weniger Aufwand für uns.

Ich möchte mich noch einmal für die tolle und schnelle Hilfe hier bedanken.

Gruß

IT
 
Zurück