C#.NET * C++ * JAVASCRIPT * PYTHON * DIVERSES
XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT



JavaScript / Objektorientiert programmieren mit JavaScript / Objekt- Deserialisierung / JSON

Objekt- Deserialisierung / JSON

Objekt- Deserialisierung / JSON

➪ Freilich gibt es grundsätzlich noch einfachere Wege, objektorientiert zu arbeiten. Es ist gar nicht erforderlich, zuerst aufwendig einen komplexen Typ im Sinn einer Klasse zu deklarieren und dann über var x = new Type(); zu instanziieren.

Objekte lassen sich einfach mit dem Object-Konstruktor instanziieren, und ebenso einfach lassen sich diesem Objekt zur Laufzeit diverse (public-) Properties zuweisen. Selbstverständlich gilt das auch für Functions wie der toString-Function. Es handelt sich dabei um vollwertige Objekte, deren Properties zur Laufzeit angesprochen bzw. - als Functions- aufgerufen werden können.

Dieses Prinzip lässt sich effizient bei JSON-basiertem AJAX verwenden.


var results = {"mensch":[
{"nachname":"Holzflos","vorname":"Hugo"},
{"nachname":"Nixlos","vorname":"Nicole"}
]};
var resultate = results.mensch;
var arr = new Array();
for (var pkat in resultate) {
  if (resultate.hasOwnProperty(pkat)) {
    var myobj = new Object();    
    for (var pp in resultate[pkat])
      if (resultate[pkat].hasOwnProperty(pp))        
        myobj[pp] = resultate[pkat][pp];      
    arr.push(myobj);
  }
}
console.log("arr.length: " + arr.length);
console.log("EINZELZUGRIFF: " + arr[1]["nachname"]);
console.log("EINZELZUGRIFF: " + arr[1].nachname);
for (var yy = 0; yy < arr.length; yy++) {
  for (var pr in arr[yy]) 
    console.log("\t" + pr + ": " + arr[yy][pr]);
}
/** ===========================================================
 *  ALTERNATIV:
 *  =========================================================== */
var Mensch = new Function("name", "vorname", 
    "this.toString = function () {return vorname + \" \" + name};");
arr=[]; // Lösche das Array
for (var pkat in resultate) {
  if (resultate.hasOwnProperty(pkat)) {
    var m = new Mensch (resultate[pkat]["nachname"], resultate[pkat]["vorname"]);  
    arr.push(m);
  }
}
for (var yy = 0; yy < arr.length; yy++) {
  if(arr[yy] instanceof Mensch)
    console.log("Mensch: " + arr[yy].toString());
  else console.log("Das Objekt ist vom Typ " + typeof(arr[yy]));
}

Das Ergebnis:


arr.length: 2
EINZELZUGRIFF: Nixlos
EINZELZUGRIFF: Nixlos
  nachname: Holzflos
  vorname: Hugo
  nachname: Nixlos
  vorname: Nicole
Mensch: Hugo Holzflos
Mensch: Nicole Nixlos

Die in JSON definierte Datenstruktur beinhaltet sämtliche Informationen, die man zur automatischen Instanziierung von Objekten und deren Properties (sowie deren inhaltlicher Zuweisung) benötigt. Für jeden mensch-Eintrag in JSON wird ein neues Objekt generiert; aus jedem relevanten JSON-Wertepaar wird in diesem Objekt ein Property gebildet und inhaltlich befüllt. Schliesslich wird das Objekt in ein vorher definiertes Array eingefügt, aus dem es dann einzeln (direkt per Index oder allgemein per Schleife) angesprochen werden kann.

wg / 6. September 2020



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.




Fazit



Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/javascript6.html