ebody: Wann JSON und wann ein Objekt nutzen?

Beitrag lesen

Hallo,

ich möchte eine Klasse erstellen, die eine Methode enthält, um Daten von einer API zu laden. Die Klasse soll zudem Methoden zum Abfragen und Filtern dieser Daten haben.

Ich frage mich jetzt

  1. Was würde ein anderer Programmierer erwarten, in welcher Form (JSON oder Objekt) er diese Daten erhält, wenn er sie abfragt?
  2. Zudem, ob ich selbst im Script besser mit einem JSON oder Objekt arbeite?

Dazu muss ich vorab auch fragen, ist das wirklich JSON?:

let movies = [
  { "Title": "The Dark Knight", "Year": 2008 },
  { "Title": "Batman Begins", "Year": 2005 },
  { "Title": "The Dark Knight Rises", "Year": 2012 }
];

Oder wäre das JSON?

let movies = '[
  { "Title": "The Dark Knight", "Year": 2008 },
  { "Title": "Batman Begins", "Year": 2005 },
  { "Title": "The Dark Knight Rises", "Year": 2012 }
]';

Ich gehe davon aus, dass Ersteres auch ein JSON ist und habe mir von ChatGTP ein Script zum Testen erstellen lassen. Die Funktionen würden sowohl mit einem Objekt und dem JSON funktionieren.

Bzgl. Frage 2 wäre es also egal?

Wenn ich die Klasse erstelle und gefragt werde "Warum gibst du die Daten als Objekt und nicht als JSON wieder?" oder "Warum verendest du in der Klasse ein Objekt und nicht JSON" würde ich selbst gerne den Nutzen/Vorteil sehen, verstehen und damit auch erklären können.

Bisher sehe ich aber keinen Unterschied.

// JavaScript-Objekt
// let movies = [
//   { Title: "The Dark Knight", Year: 2008 },
//   { Title: "Batman Begins", Year: 2005 },
//   { Title: "The Dark Knight Rises", Year: 2012 }
// ];

// JSON
let movies = [
  { "Title": "The Dark Knight", "Year": 2008 },
  { "Title": "Batman Begins", "Year": 2005 },
  { "Title": "The Dark Knight Rises", "Year": 2012 }
];
// console.log(typeof movies);

// myJSON = '{"name":"John", "age":30, "car":null}';
// console.log(typeof myJSON);

// Funktion zum Finden des Elements mit dem Titel "Batman Begins"
function findMovieByTitle(title) {
  return movies.find(movie => movie.Title === title);
}

// Funktion zum Hinzufügen eines neuen Films
function addMovie(newMovie) {
  movies.push(newMovie);
}

// Funktion zum Löschen eines Films anhand des Titels
function deleteMovieByTitle(title) {
  movies = movies.filter(movie => movie.Title !== title);
}

// Beispiel für das Löschen eines Films
deleteMovieByTitle("Batman Begins");

// Aufruf der Funktion und Ausgabe des Ergebnisses
const batmanBegins = findMovieByTitle("Batman Begins");
if (batmanBegins) {
  console.log("Gefundener Film:", batmanBegins);
} else {
  console.log("Film nicht gefunden.");
}

// Aktualisierte Filme ausgeben
console.log("Aktualisierte Filme:", movies);

Gruß ebody