Hey, ich bin ein Praktikant und ich habe ein Problem. Ich versuche ein Kalender-Webprogramm mit JavaScript zu erstellen.

Ich habe also eine JSON-Datei, die so aussieht:

{
   "datei1":{
      "titel":"text",
      "datumbegin":"2020-02-20 00:00:00",
      "datumend":"2020-02-20 00:00:00",
      "text":"Ort : text."

},
   "datei2":{
      "titel":"TEST",
      "datumbegin":"2020-02-03 00:00:00",
      "datumend":"2020-02-04 00:00:00",
      "text":"wedwefwfacafwaq"

},
   "datei3":{
      "titel":"Jahresmeeting 2019",
      "datumbegin":"2020-01-06 00:00:00",
      "datumend":"2020-01-06 00:00:00",
      "text":"Ort : test text : 10 Uhr "

},
   "datei4":{
      "titel":"Admin Meeting zum Update 0.5.5",
      "datumbegin":"2020-02-27 00:00:00",
      "datumend":"2020-02-27 00:00:00",
      "text":"Ort : probeeeeeeeeeeeee"

},
   "datei5":{
      "titel":"Schulung zum Thema Datenschutz",
      "datumbegin":"2020-02-19 00:00:00",
      "datumend":"2020-02-19 00:00:00",
      "text":"Ort : text text text"

},
   "datei6":{
      "titel":"Brandschutz Lehrgang",
      "datumbegin":"2020-02-17 00:00:00",
      "datumend":"2020-02-17 00:00:00",
      "text":"Ort: text text test text"

},
   "datei7":{
      "titel":"Bereich Wechsel 2020 Mai",
      "datumbegin":"2020-05-14 00:00:00",
      "datumend":"2020-09-19 00:00:00",
      "text":"Bereich 5 wird zu Bereich 3 gewechselt."

},
   "datei8":{
      "titel":"TEST",
      "datumbegin":"2020-02-06 12:00:00",
      "datumend":"2020-02-06 15:00:00",
      "text":"sdasasfdsdafsafsfsfswf"

}
}

So und jetzt versuche ich, jede "datei" -Eigenschaft vorzulesen.

Mein JavaScript-Code sieht im Moment so aus:

function GetData(xxx)
{


  var test = document.getElementById("table_data").innerHTML;

  var testJson = JSON.parse(test);

  console.log(testJson.datei1.titel);
  console.log(testJson.datei1);
  console.log(testJson);
  var keyCount  = Object.keys(testJson).length;
  console.log(keyCount);

  var datei_anzahl = 1;

    var titel = testJson.datei1.titel;
    var start_jahr = testJson.datei1.datumbegin;
    var end_jahr = testJson.datei1.datumend;
    var text = testJson.datei1.text;

    xxx.push({ title: titel, start: new Date(start_jahr), end: new Date(end_jahr), allDay: true, text: text  });

  return xxx;
}

var data = [];
data = GetData(data);

Also habe ich erst jetzt alle eigenschaften von "datei1" Aber ich möchte, dass eine foreach Schleife jedes "Datei" wirft. In der ersten Runde bekommt es also alles von datei1, in der zweiten Runde alles von datei2 und so weiter.

Können Sie mir bitte helfen, dass ich 3 Stunden lang bei diesem Problem stecke?

-1
Edi TV 7 Feb. 2020 im 12:38

4 Antworten

Beste Antwort
for(var date in testJson) {
    var titel = testJson[date].titel;
    var start_jahr = testJson[date].datumbegin;
    var end_jahr = testJson[date].datumend;
    var text = testJson[date].text;

    xxx.push({ title: titel, start: new Date(start_jahr), end: new Date(end_jahr), allDay: true, text: text  });
}

return xxx;
0
dafive 7 Feb. 2020 im 09:42

Können Sie Ihre JSON-Datei in eine Array-JSON-Datei ändern?

[{ datei : '...'} , { datei2 : '...'}]

Es wird ein Array sein und Sie können für jede Schleife so etwas verwenden, um Daten pro Schleife zu lesen

Wenn Sie die JSON-Datei nicht ändern können, verwenden Sie diese Option zuerst für die Konvertierung in ein Array, bevor Sie eine Schleife ausführen.

    const testJson = {
       "datei1":{
          "titel":"text",
          "datumbegin":"2020-02-20 00:00:00",
          "datumend":"2020-02-20 00:00:00",
          "text":"Ort : text."

    },
       "datei2":{
          "titel":"TEST",
          "datumbegin":"2020-02-03 00:00:00",
          "datumend":"2020-02-04 00:00:00",
          "text":"wedwefwfacafwaq"

    },
       "datei3":{
          "titel":"Jahresmeeting 2019",
          "datumbegin":"2020-01-06 00:00:00",
          "datumend":"2020-01-06 00:00:00",
          "text":"Ort : test text : 10 Uhr "

    },
       "datei4":{
          "titel":"Admin Meeting zum Update 0.5.5",
          "datumbegin":"2020-02-27 00:00:00",
          "datumend":"2020-02-27 00:00:00",
          "text":"Ort : probeeeeeeeeeeeee"

    },
       "datei5":{
          "titel":"Schulung zum Thema Datenschutz",
          "datumbegin":"2020-02-19 00:00:00",
          "datumend":"2020-02-19 00:00:00",
          "text":"Ort : text text text"

    },
       "datei6":{
          "titel":"Brandschutz Lehrgang",
          "datumbegin":"2020-02-17 00:00:00",
          "datumend":"2020-02-17 00:00:00",
          "text":"Ort: text text test text"

    },
       "datei7":{
          "titel":"Bereich Wechsel 2020 Mai",
          "datumbegin":"2020-05-14 00:00:00",
          "datumend":"2020-09-19 00:00:00",
          "text":"Bereich 5 wird zu Bereich 3 gewechselt."

    },
       "datei8":{
          "titel":"TEST",
          "datumbegin":"2020-02-06 12:00:00",
          "datumend":"2020-02-06 15:00:00",
          "text":"sdasasfdsdafsafsfsfswf"

    }
    };

    // convert to array 
    let data = [];
    for (let key in testJson) {
      if (testJson.hasOwnProperty(key)) {
        data.push({name : key , data : testJson[key]})
  }
}
console.log(data);

Dann bist du einfach

data.forEach(element => console.log(element));

Fröhliche Codierung

0
Nuttertools 7 Feb. 2020 im 09:58

Versuche dies....

function GetData(xxx) {
  
  var jsonData = document.getElementById("table_data").innerHTML; 
  jsonData = JSON.parse(jsonData);
 
  let keys = Object.keys(jsonData);
	for(const k of keys){
		xxx.push(jsonData[k]); 
	}  
  return xxx;
}

var data = [];
data = GetData(data);
console.log(data);
<textarea id="table_data">{
   "datei1":{
      "titel":"text",
      "datumbegin":"2020-02-20 00:00:00",
      "datumend":"2020-02-20 00:00:00",
      "text":"Ort : text text text."

},
   "datei2":{
      "titel":"TEST",
      "datumbegin":"2020-02-03 00:00:00",
      "datumend":"2020-02-04 00:00:00",
      "text":"wedwefwfacafwaq"

},
   "datei3":{
      "titel":"Jahresmeeting 2019",
      "datumbegin":"2020-01-06 00:00:00",
      "datumend":"2020-01-06 00:00:00",
      "text":"Ort : text test text"

},
   "datei4":{
      "titel":"Admin Meeting zum Update 0.5.5",
      "datumbegin":"2020-02-27 00:00:00",
      "datumend":"2020-02-27 00:00:00",
      "text":"Ort :text text test text"

},
   "datei5":{
      "titel":"Schulung zum Thema Datenschutz",
      "datumbegin":"2020-02-19 00:00:00",
      "datumend":"2020-02-19 00:00:00",
      "text":"Ort : text test ext ext

},
   "datei6":{
      "titel":"Brandschutz Lehrgang",
      "datumbegin":"2020-02-17 00:00:00",
      "datumend":"2020-02-17 00:00:00",
      "text":"Ort: text text textr"

},
   "datei7":{
      "titel":"Bereich Wechsel 2020 Mai",
      "datumbegin":"2020-05-14 00:00:00",
      "datumend":"2020-09-19 00:00:00",
      "text":"Bereich 5 wird zu Bereich 3 gewechselt."

},
   "datei8":{
      "titel":"TEST",
      "datumbegin":"2020-02-06 12:00:00",
      "datumend":"2020-02-06 15:00:00",
      "text":"sdasasfdsdafsafsfsfswf"

}
}</textarea>
0
Edi TV 7 Feb. 2020 im 09:57
Object.keys(json).forEach(function(key){
    var title = json[key].titel;
  var datumbegin = json[key].datumbegin
  console.log(title, datumbegin)
})

Versuche dies. Hier ist jsfiddle: https://jsfiddle.net/jbke43to/

0
Rojen 7 Feb. 2020 im 09:49