2017-12-12 5 views
0

Der folgende AJAX-Aufruf gibt eine JSON-Datei mit mehreren JSON-Einträgen genau nacheinander zurück. Ich habe diese von der Konsole gezogen. Beachten Sie, dass die Einträge nicht in einem Array ankommen.Iterieren durch verschachtelte JSON-Dateien ohne Arrays

{"display_name":"ESL_SC2","_id":30220059,"name":"esl_sc2","type":"user","bio":"For standings, schedule, and results, visit http://www.intelextrememasters.com/","created_at":"2012-05-02T09:59:20Z","updated_at":"2017-12-12T19:05:29Z","logo":"https://static-cdn.jtvnw.net/jtv_user_pictures/esl_sc2-profile_image-d6db9488cec97125-300x300.jpeg","_links":{"self":"https://api.twitch.tv/kraken/users/esl_sc2"}} 
{"display_name":"RobotCaleb","_id":54925078,"name":"robotcaleb","type":"user","bio":null,"created_at":"2014-01-13T04:07:33Z","updated_at":"2017-12-12T18:02:11Z","logo":"https://static-cdn.jtvnw.net/jtv_user_pictures/robotcaleb-profile_image-9422645f2f0f093c-300x300.png","_links":{"self":"https://api.twitch.tv/kraken/users/robotcaleb"}} 

Ich bin in allen Tonarten/Immobilien in jeder Datei nicht interessiert, sondern nur ich ein paar der Werte in das DOM injiziert werden soll.

Hier ist der JQ, den ich habe. Es ist die updateUserInfo Funktion, die in Frage steht. Es wird für jeden Schlüssel in jeder JSON-Datei ausgelöst, was ich vermeiden möchte.

Antwort

1

Wenn diese Werte in einer Reihe von Zeilen angezeigt werden, die eine Gruppe von Objekten darstellen, erhalten Sie keine echte JSON-Datei.

Wenn die JSON-Datei korrekt dann betrachten formatiert ist ein Array erstellen, die die Schlüssel enthält, die Sie etwa wie folgt Pflege:

var myKeys = ["display_name","_id","type","logo"]; 

und durchlaufen, dass anstelle des gesamten Objekts.

myKeys.forEach(function(key) { 
    // Your code here 
1

Das Dateiformat, das Sie erhalten, heißt JSON Lines. Sie können dieses Format in ein Array umwandeln manuell relativ einfach

const input = ...; // This is the string which is encoded as a json object per line 
const array = input.split('\n').map(function(line) { return JSON.parse(line);}); 

Grundsätzlich Sie ein Array erstellen, in dem jede Zeile des Originals ist nun ein Eintrag des Arrays. Sie ordnen dann jeden Wert eines Strings einem Objekt zu.

In Ihrer Methode können Sie das resultierende Array

durchlaufen
Verwandte Themen