我在 JavaScript 中将字符串转换为哈希值(实际上是嵌套哈希值的哈希值)时遇到问题。
我想转换以下字符串:
"{'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}}"
我想这样做,以便我可以执行 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);
最佳答案
为什么不直接使用 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()
是危险的。它也很昂贵:如果您想在数千个或更多条目的循环中使用它,您将看到一些时间流逝。
关于Javascript 将字符串转换为哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35106086/