2016-11-27 4 views
-2

Ich arbeite an einem Projekt, in dem ich Daten aus der dynamischen JSON-Datei verwenden muss. Dies ist ein Beispiel dafür, wie die JSON-Datei aussehen könnte.Werte aus der Hälfte der dynamischen JSON-Datei abrufen

{ 
    "selectors": { 
     "title": { 
      "css": ".title" 
     }, 
     "url": { 
      "css": ".url" 
     } 
    } 
} 

Da der Inhalt der JSON-Datei dynamisch ist, kann ich nicht Objekt zugreifen, wie zum Beispiel:

var data = '{"selectors":{"title":{"css":".title"},"url":{"css":".url"}}}'; 
var json = JSON.parse(data); 
var element = json.selectors.title.css; 

Allerdings gibt es zwei Objekte, die immer denselben Namen haben wird, und das sind Selektoren und css.

Nun, wie kann ich auf die Objekte Titel, url, Kategorie, Zeit wenn sie dynamisch sind? UND dann auf css object durch diese zugreifen?

Ich brauche vanila JavaScript, nicht jQuery.

+0

Es ist am besten, wenn Sie Ihre eigene Arbeit machen, dann fragen Sie uns, wenn Sie stecken bleiben. Wir sind nicht wirklich hier, um Programmieraufgaben für Sie zu erledigen. Bitte lesen [fragen]. –

+0

Sie können [Object.keys()] (https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/keys) verwenden, um die dynamischen Schlüssel in den Unterobjekten selector und css zu erhalten ". In Kombination mit [Array.includes()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes) können Sie dann bestimmen, ob ein Schlüssel benannt ist 'title' oder 'url', etc, und schließlich diese Objekte zu bekommen. – pazitos10

Antwort

1

Weil Sie nicht wissen, ob ein bestimmtes Attribut vorhanden Sie eine Schleife durch alle von ihnen benötigen:

var json = JSON.parse(data); 
for (key in json) { 

} 

aber sicher, dass Sie nur eine Schleife durch gültige Objekte (und nicht etwas, das jemand anderes haben könnte manipuliert) Sie hasOwnProperty überprüfen sollten:

var json = JSON.parse(data); 
for (key in json) { 
    if (json.hasOwnProperty(key) { 

    } 
} 

Jetzt Sie eine Schleife durch die erste Ebene des Attributs sicher sind, die in Ihrem Beispiel selectors nur das Attribut. Jetzt können Sie eine weitere Schleife fügen Sie die 2. Ebene von Attributen zu überprüfen:

var json = JSON.parse(data); 
for (key in json) { 
    if (json.hasOwnProperty(key) { 
    for (second_level in key) { 
     if (key.hasOwnProperty(second_level) { 
     if (second_level == 'title') { /* do something with title */ } 
     if (second_level == 'url') { /* do something with url */ } 
     } 
    } 
    } 
} 

Dies kann ein wenig chaotisch, sondern weil Sie eine bestimmte Struktur erwarten, können Sie nur für diese Attribute überprüfen:

if (json.hasOwnProperty('selectors') { 
    if (json.selectors.hasOwnProperty('title') { /* do something with title*/ } 
    if (json.selectors.hasOwnProperty('url') { /* do something with url */ } 
} 

Wir können direkt auf den Attributtitel und die URL zugreifen, da dies in Ihrem JSON Objekte sind ({}) und nicht Arrays ([]), wenn sie Arrays wären, müssten Sie sie durchlaufen.

Hoffe es hilft

Verwandte Themen