Javascript将字符串转换为哈希

时间:2016-01-30 19:26:46

标签: javascript json hash

我在javascript中将字符串转换为哈希(实际上是嵌套哈希哈希)时遇到了问题。

我想转换以下字符串:

  

" {' btc_usd':{'价格':376.2,'音量':42812.69,'更改':   -0.5},' btc_cny':{'价格':2519.39,'卷':67148.51,'更改':-85.13},& #39; ltc_usd':{'价格':3.068,'音量':4735.55,'更改':-0.58},' btc_ltc&# 39;:{'价格':0.00805433,'音量':153.33,'更改':-0.76},' btc_eth':{& #39;价格':0.00660196,'音量':6428.98,'更改':5.87}}"

我想这样做,以便我可以做哈希[' btc_usd'] ['价格']并获得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);

2 个答案:

答案 0 :(得分:1)

您的字符串和有效JSON之间唯一不同的是使用单引号而不是双引号。所以你可以改变它,然后解析生成的JSON。

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

当然,只有没有带单引号的字符串文字(例如{'name': 'John O\'hara'}),这才有效。

答案 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()如果你不确切知道你的字符串来自哪里是危险的,例如:你没有自己生产它。它也很昂贵:如果你想在一个或多个条目的循环中使用它,你会看到一些时间过去。