2016-06-13 21 views
0

Ich verwende Google Script eine URL zu holen, die mir die folgenden JSON-Objekt zurückgibt:Wie Extrahieren von Daten aus JSON-Objekt

[ 
    { 
     "rsid":"op-bigideas", 
     "site_title":"Big Ideas", 
     "evars":[ 
      { 
       "name":"Tracking Code", 
       "type":"text_string", 
       "id":"trackingcode", 
       "expiration_type":"week", 
       "expiration_custom_days":"1", 
       "allocation_type":"most_recent_last" 
      }, 
      { 
       "name":"Custom eVar 1", 
       "description":"", 
       "type":"text_string", 
       "enabled":false, 
       "id":"evar1", 
       "expiration_type":"visit", 
       "expiration_custom_days":1, 
       "allocation_type":"most_recent_last" 
      } 
     ] 
    } 
    ] 

Wie kann ich extrahieren Sie die name Eigenschaft von evars mit javascript mit Google Apps Script?

Dies ist der Code, der mir das JSON-Objekt zurückgibt:

var elements = JSON.parse(UrlFetchApp.fetch(url, options)); 

Ich habe bereits versucht, die folgenden aber nur undefined Nachricht empfangen:

1.

for(var elem in elements) { 
    Logger.log(elements[elem]['evars'].name); 
    } 

2.

for(var elem in elements) { 
    Logger.log(elements[elem].evars.name); 
    } 

3.

var newData = JSON.parse(elements); 
Logger.log(newData.evars.name) 
+0

Punkt der Ausbildung: Es gibt keine Sache wie ein JSON-Objekt. Sobald Sie die Daten analysiert haben, haben Sie ein JavaScript-Objekt oder ein Array. –

Antwort

1

Wenn ich Sie richtig verstehe, wollen Sie die Werte der name Eigenschaften erhalten. Dieser Code wird protokolliert die name Eigenschaften:

for (var elem in elements) { 
    for (var evar in elements[elem].evars) { 
    Logger.log(elements[elem].evars[evar].name); 
    } 
} 

erhalten Sie folgende Ausgabe:

"Tracking Code" 
"Custom eVar 1" 
+0

Ich habe nur 1 Objekt zur Frage hinzugefügt, aber der JSON enthält mehr als 10 Objekte und ich muss die 'name' Eigenschaft für alle von ihnen protokollieren ... – Valip

+0

Okay, ich habe den Code leicht modifiziert – tjespe

0

Es gibt mehrere name Eigenschaften für jedes Element, so dass ich glaube, Sie zweimal abbilden wollen:

elements.map(function(elt) { 
    return !elt.evars ? [] : elt.evars.map(function(evar) { 
     return evar.name; 
    }); 
}); 

Dies wird Ihnen ein Array von Arrays geben; Das äußere Array besteht aus den Elementen, von denen jedes ein Array der Namen enthält. Für Ihr Beispiel wird dies sein:

[ 
    ["Tracking Code", "Custom eVar 1"] 
] 
0

for (var elem in elements[0].evars) { 
 
    Logger.log(elements[0].evars[elem].name); 
 
}