2009-08-07 17 views
1

Ich versuche, die shortUrl aus der Bit.ly JSON Antwort zu extrahieren. Das Problem ist, dass die ursprüngliche URL in der Antwort enthalten ist. Die Punktnotation zum Durchlaufen der Antwort funktioniert nicht. Ich kann die anderen Attribute (errorCode, errorMessage usw.) bekommen, aber ich kann nichts unter Ergebnisse wegen der URL bekommen. Fehle ich etwas?Parsen Bit.ly JSON Antwort in Javascript (URL in JSON Antwort)

Dies ist die Antwort:

{ 
    "errorCode": 0, 
    "errorMessage": "", 
    "results": { 
     "http://www.google.com/": { 
      "hash": "2V6CFi", 
      "shortKeywordUrl": "", 
      "shortUrl": "http://bit.ly/1F5ewS", 
      "userHash": "1F5ewS" 
     } 
    }, 
    "statusCode": "OK" 
} 

Antwort

2

Javascript-Objekte können über die Punktnotation (obj.property) , wenn und nur wenn der Eigenschaftsname eine gültige Javascript-Kennung ist auch zugegriffen werden.

In Ihrem Beispiel, da eine URL eindeutig kein gültiger Bezeichner ist, können Sie die andere Methode, Array-style-Zugang (obj[property]) verwenden:

var obj = { 
    yahoo: 5 
    'http://www.google.com':10 
}; 

// Both of these work just fine. 
var yahoo = obj.yahoo; 
var google = obj['http://www.google.com']; 
0
var responseAsJSON = eval(jsonString); 
alert(responseAsJSON.shortUrl); 
1

eval arbeiten JSON zu analysieren, aber es wird oft als unsicher angesehen, da sie die JSON-Datei auszuführen, was Code ermöglicht es mag. This question diskutiert warum und zeigt einige sicherere Möglichkeiten, JSON zu parsen.

0

Versuchen Sie dieses:

var myJSONResponse = { "errorCode": 0, "errorMessage": "", "results": { "http://www.google.com/": { "hash": "2V6CFi", "shortKeywordUrl": "", "shortUrl": "http://bit.ly/1F5ewS", "userHash": "1F5ewS" } }, "statusCode": "OK" }; 

var theShortURL = myJSONResponse.results [ "http://www.google.com/"] .shortUrl;

theShortURL wird als Ergebnis http://bit.ly/1F5ewS halten.