Hallo Leute, vorab die JSON-Datei
diese JSON-Datei soll dynamisch ausgelesen werden.
Ich hatte dafür folgende Lösung erarbeitet, die zwar eine korrekte Ausgabe liefert, allerdings verworfen wurde,da sie die ProductId(innerer Zählerindizie) verwendet.
Erwünscht ist eine Lösung, die die JSON unabhängig von der ProductId ausliest.
Dazu habe ich zunächst folgende Fragen:
Weiß jemand Rat??
Code:
{
"Allergens":{
"0_":{
"Id":"0_",
"Label":"1"
},
"0_0":{
"Id":"0_0",
"Label":"1A"
},
"0_1":{
"Id":"0_1",
"Label":"1B"
},
"0_2":{
"Id":"0_2",
"Label":"1C"
},
"0_3":{
"Id":"0_3",
"Label":"1D"
},
"1_":{
"Id":"1_",
"Label":"2"
},
"2_":{
"Id":"2_",
"Label":"3"
},
"3_":{
"Id":"3_",
"Label":"4"
},
"4_":{
"Id":"4_",
"Label":"5"
},
"5_":{
"Id":"5_",
"Label":"6"
},
"6_":{
"Id":"6_",
"Label":"7"
},
"7_":{
"Id":"7_",
"Label":"8"
},
"7_0":{
"Id":"7_0",
"Label":"8A"
},
"7_1":{
"Id":"7_1",
"Label":"8B"
},
"7_2":{
"Id":"7_2",
"Label":"8C"
},
"7_3":{
"Id":"7_3",
"Label":"8D"
},
"7_4":{
"Id":"7_4",
"Label":"8E"
},
"7_5":{
"Id":"7_5",
"Label":"8F"
},
"7_6":{
"Id":"7_6",
"Label":"8G"
},
"7_7":{
"Id":"7_7",
"Label":"8H"
},
"8_":{
"Id":"8_",
"Label":"9"
},
"9_":{
"Id":"9_",
"Label":"10"
},
"10_":{
"Id":"10_",
"Label":"11"
},
"11_":{
"Id":"11_",
"Label":"12"
},
"12_":{
"Id":"12_",
"Label":"13"
},
"13_":{
"Id":"13_",
"Label":"14"
}
},
"Products":{
"4293205":{
"AllergenIds":[
"0_",
"8_",
"10_"
],
"ProductId":4293205,
"Name":"Asiatische Wok-Pfanne",
"Price":{
"Betrag":6.9
}
},
"4293206":{
"AllergenIds":[
"8_"
],
"ProductId":4293206,
"Name":"Fasanenbrust \"Winzerin Art\"",
"Price":{
"Betrag":5.7
}
},
"4299359":{
"AllergenIds":[
"0_",
"2_",
"6_"
],
"ProductId":4299359,
"Name":"Pfefferbraten vom Schweinenacken",
"Price":{
"Betrag":4.7
}
},
"4299392":{
"AllergenIds":[
"0_"
],
"ProductId":4299392,
"Name":"Flammenkuchen Camembert",
"Price":{
"Betrag":3.7
}
},
"4299401":{
"AllergenIds":[
"0_",
"6_"
],
"ProductId":4299401,
"Name":"Quiche Lorraine, gefüllt mit Eiermilch, Speck und Käse",
"Price":{
"Betrag":4.4
}
},
"4299402":{
"AllergenIds":[
"0_",
"5_"
],
"ProductId":4299402,
"Name":"Knusprige Ente",
"Price":{
"Betrag":5.9
}
},
"4299404":{
"AllergenIds":[
"2_"
],
"ProductId":4299404,
"Name":"Eiersalat mit Äpfeln und Curry",
"Price":{
"Betrag":1.1
}
},
"4299405":{
"AllergenIds":[
],
"ProductId":4299405,
"Name":"Feldsalat mit Bündner Fleisch",
"Price":{
"Betrag":1.3
}
},
"4299407":{
"AllergenIds":[
"7_"
],
"ProductId":4299407,
"Name":"Frischer Feldsalat mit Himbeeren und Walnusskernen",
"Price":{
"Betrag":1.1
}
},
"4299411":{
"AllergenIds":[
"6_"
],
"ProductId":4299411,
"Name":"Kartoffel-Gurken-Salat mit Ziegenkäse",
"Price":{
"Betrag":1.8
}
},
"4299413":{
"AllergenIds":[
"3_"
],
"ProductId":4299413,
"Name":"Lachssalat",
"Price":{
"Betrag":2.7
}
}
},
"Rows":[
{
"Name":"Aktion 1",
"Days":[
{
"Weekday":0,
"ProductIds":[
{
"ProductId":4293205
}
]
},
{
"Weekday":1,
"ProductIds":[
{
"ProductId":4299402
}
]
},
{
"Weekday":2,
"ProductIds":[
{
"ProductId":4299359
}
]
},
{
"Weekday":3,
"ProductIds":[
{
"ProductId":4293205
}
]
},
{
"Weekday":4,
"ProductIds":[
{
"ProductId":4299402
}
]
}
]
},
{
"Name":"Aktion 2",
"Days":[
{
"Weekday":0,
"ProductIds":[
{
"ProductId":4293206
}
]
},
{
"Weekday":1,
"ProductIds":[
{
"ProductId":4299401
}
]
},
{
"Weekday":2,
"ProductIds":[
{
"ProductId":4299392
}
]
},
{
"Weekday":3,
"ProductIds":[
{
"ProductId":4293206
}
]
},
{
"Weekday":4,
"ProductIds":[
{
"ProductId":4299401
}
]
}
]
},
{
"Name":"Salatbar",
"Days":[
{
"Weekday":0,
"ProductIds":[
{
"ProductId":4299404
}
]
},
{
"Weekday":1,
"ProductIds":[
{
"ProductId":4299405
}
]
},
{
"Weekday":2,
"ProductIds":[
{
"ProductId":4299411
}
]
},
{
"Weekday":3,
"ProductIds":[
{
"ProductId":4299407
}
]
},
{
"Weekday":4,
"ProductIds":[
{
"ProductId":4299413
}
]
}
]
}
]
diese JSON-Datei soll dynamisch ausgelesen werden.
Ich hatte dafür folgende Lösung erarbeitet, die zwar eine korrekte Ausgabe liefert, allerdings verworfen wurde,da sie die ProductId(innerer Zählerindizie) verwendet.
Erwünscht ist eine Lösung, die die JSON unabhängig von der ProductId ausliest.
Dazu habe ich zunächst folgende Fragen:
- Welche Schleife muss verwendet werden
- Wie geht man prinzipiell vor
Weiß jemand Rat??
HTML:
<script>
function myFunction() {
var absatz = document.createElement("p");
document.getElementById("platzhalter_0").appendChild(absatz);
$.getJSON("https://my.qnips.com/dbapi/ha", function(daten) {
var output="<table border='3'>" ; // in PHP würde man hier den Block unterbrechen.
output+="<thead>";
output+="<tr>";
output+="<th>Kw 8</th>";
output+="<th>Montag<br>22.02.2016</th>";
output+="<th>Dienstag<br>23.02.2016</th>";
output+="<th>Mittwoch<br>24.02.2016</th>";
output+="</tr>";
output+="</thead>";
output+="<tfoot>";
output+="<tr>";
output+="<td colspan='4'><font color='black'>Alle Angaben ohne Gewähr</td>";
output+="</tr>";
output+="</tfoot>";
output+="<tbody>";
//liest iterativ die erste Spalte der Tabelle aus (Aktion1_Aktion2)
for (var i in daten.Rows) {
output+="<tr><td class='rand'>" + daten.Rows[i].Name+"</td>";
if(i==1) break; // liest iterativ den ersten Record der Tabelle aus (Asiatische Wokpfanne)
for (var j in daten.Products) {
output+="<td>" + daten.Products[j].Name+"<br>"; //liest die ersten drei Zusatzstoffe aus
output+=daten['Allergens']['0_']['Label']+",";
output+=daten['Allergens']['10_']['Label']+",";
output+=daten['Allergens']['8_']['Label']+"<br>";
output+=daten.Products[j].Price.Betrag+"0€"+"<br>"; //liest den Preis aus
//output+="<td><b>Index:"+j+"</td></b>"; //gibt die ProduktId aus
if(j==4293205){ // sobald erster Record vollständig ....
output+="<td>" + daten.Products[4299402].Name+"<br>"; // weitere Records auslesen / knusprige Ente...
output+=daten['Allergens']['0_']['Label']+",";
output+=daten['Allergens']['5_']['Label']+"<br>";
output+=daten.Products[4299402].Price.Betrag+"0€"+"<br>";
output+="<td>" + daten.Products[4299359].Name+"<br>";
output+=daten['Allergens']['0_']['Label']+",";
output+=daten['Allergens']['2_']['Label']+",";
output+=daten['Allergens']['6_']['Label']+"<br>";
output+=daten.Products[4299359].Price.Betrag+"0€"+"<br>"; // bis Pfefferbraten
break;
}
}
}
// die restlichen Records manuell auslesen
output+="<td>" + daten.Products[4293206].Name+"<br>"; //von Fasanenbrust bis...
output+=daten['Allergens']['8_']['Label']+"<br>";
output+=daten.Products[4293206].Price.Betrag+"0€"+"<br></td>";
output+="<td>"+daten.Products[4299401].Name+"<br>";
output+=daten['Allergens']['0_']['Label']+",";
output+=daten['Allergens']['6_']['Label']+"<br>";
output+=daten.Products[4299401].Price.Betrag+"0€"+"<br></td>";
output+="<td>"+daten.Products[4299392].Name+"<br>";
output+=daten['Allergens']['0_']['Label']+"<br>";
output+=daten.Products[4299392].Price.Betrag+"0€"+"<br></td>"; //Flammkuchen
//letzte Spalte iterativ erzeugen
for(var i in daten.Rows){
if(i==2) output+="<tr><td class='rand'>" + daten.Rows[i].Name+"</td>";} //sofern dritter und letzter Datensatz erreicht...
for (var j in daten.Products){
output+="<td>" + daten.Products[4299404].Name+"<br>"; //alle Records von 'Salatbar' auslesen
output+=daten['Allergens']['2_']['Label']+"<br>";
output+=daten.Products[4299404].Price.Betrag+"0€"+"<br>";
output+="<td>" + daten.Products[4299405].Name+"<br>";
output+=daten.Products[4299405].AllergenIds+"<br>";
output+=daten.Products[4299405].Price.Betrag+"0€"+"<br>";
output+="<td>" + daten.Products[4299411].Name+"<br>";
output+=daten['Allergens']['6_']['Label']+"<br>";
output+=daten.Products[4299411].Price.Betrag+"0€"+"<br>";
break;
}
output+="</tr></tr></tbody>";
document.getElementById("platzhalter_0").innerHTML=output;
}//Ende der Funktion daten
);
}//Ende von myfunction
</script>