2016-01-30 105 views
0

我在JavaScript中將字符串轉換爲散列(實際上嵌套散列的散列)時遇到了問題。JavaScript將字符串轉換爲散列

我想下面的字符串轉換:

「{ 'btc_usd':{ '價格':376.2, '量':42812.69, '變化': -0.5}, 'btc_cny': 'price':2519.39,'volume':67148.51,'change':-85.13},'ltc_usd':{'price':3.068,'volume':4735.55,'change':-0.58},'btc_ltc': 'price':0.00805433,'volume':153.33,'change':-0.76},'btc_eth':{'price':0.00660196,'volume':6428.98,'change':5.87}}「

我想讓它可以做hash ['btc_usd'] ['price']並獲得376.2。

我該怎麼做?

這是我曾嘗試,但它似乎沒有運行:

var string="{'btc_usd': {'price': 376.2, 'volume': 42812.69, 'change': -0.5},'btc_cny': {'price': 2519.39, 'volume': 67148.51, 'change': -85.13},'ltc_usd': {'price': 3.068, 'volume': 4735.55, 'change': -0.58},'btc_ltc': {'price': 0.00805433, 'volume': 153.33, 'change': -0.76},'btc_eth': {'price': 0.00660196, 'volume': 6428.98, 'change': 5.87}}" 
var results=JSON.parse(string); 
+3

這不是一個有效的JSON,你從哪裏得到它? – zerkms

+2

爲了澄清,單引號'''應該是雙引號'''它是有效的。 – Stijn

+1

我很確定字符串需要用雙引號和單引號無效 –

回答

1

爲什麼不直接使用JSON?

var string = "{'btc_usd': {'price': 376.2, 'volume': 42812.69, 'change': -0.5},'btc_cny': {'price': 2519.39, 'volume': 67148.51, 'change': -85.13},'ltc_usd': {'price': 3.068, 'volume': 4735.55, 'change': -0.58},'btc_ltc': {'price': 0.00805433, 'volume': 153.33, 'change': -0.76},'btc_eth': {'price': 0.00660196, 'volume': 6428.98, 'change': 5.87}}"; 
string = "hash = " + string + ";"; 
eval(string); 

console.log(hash.btc_usd.price); 

這是很簡單,但它是有代價的標籤:該eval()是危險的,如果你不完全知道你的字符串是來自,例如:你沒有自己生產。它也很昂貴:如果你想在一個循環中使用它,超過一千或更多的條目,你會看到一些時間流逝。

1

那是你的字符串和有效的JSON之間唯一不同的是單引號,而不是雙引號的使用。所以你可以改變它,然後解析生成的JSON。

str = str.replace(/'/g, "\""); 
var result = JSON.parse(str); 

當然,因爲有不字符串文字用單引號(例如{'name': 'John O\'hara'}),這是唯一的,只要有效。

相關問題