Javascript 需要帮助从“获取价值”;{";k1";:";v1";,";k2";:";v2";}";

Javascript 需要帮助从“获取价值”;{";k1";:";v1";,";k2";:";v2";}";,javascript,attributes,Javascript,Attributes,我从其他人那里得到了一个结果 elem.getAttribute("additional-attributes") …结果是: "{"k1":"v1", "k2":"v2"}" 那么我必须解析字符串才能从“k2”中得到“v2”吗?还是有更好的方法获得价值 谢谢 你可以先用逗号,然后用冒号。或者一个简单的正则表达式就可以做到这一点。如果字符串实际上是这样的(请注意'as a string操作符): 您可以这样做(将该字符串转换为JS对象): 然后要访问k2值,请执行以下操作: var k2va

我从其他人那里得到了一个结果

elem.getAttribute("additional-attributes")
…结果是:

"{"k1":"v1", "k2":"v2"}"
那么我必须解析字符串才能从“k2”中得到“v2”吗?还是有更好的方法获得价值


谢谢

你可以先用逗号,然后用冒号。或者一个简单的正则表达式就可以做到这一点。

如果字符串实际上是这样的(请注意'as a string操作符):

您可以这样做(将该字符串转换为JS对象):

然后要访问
k2
值,请执行以下操作:

var k2value = obj.k2;

如果字符串格式不正确,您可以将其重新格式化为有效的JS字符串,然后对其执行eval(),使其成为一个对象。

好的,因此您希望使用
JSON.parse
获取对象,然后使用
obj.k1
obj.k2
获取值…

该“字符串”(我假设你引用的不正确,它实际上是
“{”k1:“v1”,“k2:“v2”}”
)是JSON格式的,代表一个JS对象。也许你是对的……我看到了firefox手表上的字符串……如果是,我应该如何获取值?谢谢!使用
JSON.parse
获取对象,然后使用
obj.k1
obj.k2
获取值……哇,这很有效!我不知道如何支持你的评论作为答案gh…非常感谢!@user723979我已经给出了答案……如果解析是唯一的方法……我想我必须这样做……我想这里有点问题……+1对于一个在没有本地JSON支持的浏览器中工作的方法(在ES5中引入)。@Saxoier:我不是用eval“解析”JSON”我使用eval是为了它的目的,这就是评估,因为eval用于“评估或执行给定的JAVASCRIPT表达式”。这是以前的做法,当时web浏览器中没有本地JSON支持,它在任何地方都可以工作,而且由于它的结果被放入了一个新的变量中,没有人可以注入不愿意执行的JavaScript。所以我不明白为什么你-我,你能澄清eval有什么不好吗?@RobG:“eval”是唯一的内置方法-Yo你可以编写自己的JSON解析器,也可以使用已经可用的JSON库。@Saxoier-我不理解你对我的评论。当然,没有必要编写JSON解析器来将文本转换为对象,编写函数从对象生成JSON非常简单(但这不是问题所在)。
var obj = eval("("+string+")");
var k2value = obj.k2;