2009-08-07 30 views
1

私はBit.ly JSON応答からSHORTURLを抽出しようとしています。問題は、元のURLが応答に含まれている、ドット表記を使用して応答をトラバースできないということですか?私は他の属性(errorCode、errorMessageなど)を得ることができますが、私は結果のURLのbeacuseの下に何かを得ることができません。 何か不足していますか?解析Bit.ly JSONレスポンス(JSONレスポンス内のURL)

これが応答である:

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

答えて

2

ドット表記(obj.propertyでアクセスできます。のプロパティ名も有効なJavascript識別子である場合に限ります。あなたの例では

、URLは明らかに有効な識別子ではないので、あなたは他の方法で、配列風のアクセス(obj[property])を使用することができます:

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はJSONをパースしていきますが、それはそれが好きなものは何でもコードを実行するためにJSONファイルを可能にするので、それは多くの場合、安全でないと考えられています。理由について説明し、JSONを解析するより安全な方法を示しています(This question)。

0

あなたのサンプルJSONオブジェクトから、私は「http://www.google.com/は」(「結果」のような)サブオブジェクトの名前であることを期待します。代わりに、「http://www.google.com/」を「リンク」に置き換えたとします。このように "shortUrl"(response.results.link.shortUrl)を参照すると、 "http://bit.ly/1F5ewS"が返されます。

0

は、この方法を試してください。

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は、結果としてhttp://bit.ly/1F5ewSを開催します。

関連する問題