2012-04-26 66 views
1

所以我有這個JSONJSON映射在Javascript

https://bitcoinpayflow.com/orders{"order":{"bitcoin_address":"1NwKSH1DJHhobCeuwxNqdMjK5oVEZBFWbk"}}

不,我想引用bitcoin_address

首先,我在一開始

 var stripped = data.substring(33); 
     alert(stripped); 
       var btc = stripped.orders.bitcoin_address; 
     alert(btc); 

我剝去字符串得到第一個警報,但不是第二個。任何想法爲什麼?

回答

2

因爲stripped仍然只是一個字符串。你需要將它解析成一個對象。您可以使用本地JSON.parse方法來做到這一點:

var stripped = JSON.parse(data.substring(33)); 

另外,你引用的orders屬性,它不存在。這是order

請注意,舊版瀏覽器不支持JSON.parse。您可以使用this polyfill來確保它始終可用。

+0

downvote的任何理由? – 2012-04-26 08:47:44

+0

謝謝!我之前使用'訂單'。這只是匆忙改寫爲stackoverflow。 我沒有downvote?我在等待,直到時間限制過去,所以我可以打勾。 – Joseph 2012-04-26 08:48:51

1

最簡單的方法來解碼JSON - 字符串 - 使用eval

var bitcoins = eval('(' + json_string + ')'); 

並獲得bitcoins['order']['bitcoin_address'] 但它有點不安全。上層方法更安全。

+1

不,處理JSON字符串的最簡單方法是使用'JSON.parse'。你不需要爲此使用'eval'。 – 2012-04-26 08:43:56

+0

使用eval通常是一個壞主意。儘可能避免這種情況。 – Kirstein 2012-04-26 08:44:28

+0

Omg我知道它,但它也是作品。如果我寫這種方法,它意味着我使用它 – 2012-04-26 08:45:16

1

我會使用JSON.parse如下。

$.post('php/whatever.php',{data:dS},function(res){ 
    var o=JSON.parse(res); 
    var bitcoins=o.order.bitcoinaddress; 
},"text"); 
+0

爲什麼你使用「文本」而不​​是「json」? – 2012-04-26 08:53:00

+1

這是一個非常好的問題,丹尼斯。我開始使用「文本」來避免「智能猜測」的需要,因爲我猜我最初使用的模型也使用了「文本」。我不確定如果我把它做成'json',實際的區別是什麼。我最初的印象是它可能不需要解析步驟。 Thwt的第二個例子是如何出現在http://api.jquery.com/jQuery.post/上的。我可能需要更新一堆代碼!儘管我發佈了,但它工作正常。 – Nick 2012-04-26 10:15:35