Javascript 从JSON对象获取属性

Javascript 从JSON对象获取属性,javascript,regex,Javascript,Regex,编辑:如前所述,我有以下JSON对象: Object {name: "red", percent: 36, rgb: "rgb(216,28,63)"} 我需要把百分数和rgb数提取成两个独立的变量 我试过: var noDivsToColour = JSON.parse(availableColours[k], "percent"); 如果AvailableColor[k]引用了我的对象,但出现错误“意外标记0”-有人能帮忙吗?您可以尝试以下方法: var obj = JSON.pars

编辑:如前所述,我有以下JSON对象:

Object {name: "red", percent: 36, rgb: "rgb(216,28,63)"} 
我需要把百分数和rgb数提取成两个独立的变量

我试过:

var noDivsToColour = JSON.parse(availableColours[k], "percent");
如果AvailableColor[k]引用了我的对象,但出现错误“意外标记0”-有人能帮忙吗?

您可以尝试以下方法:

var obj = JSON.parse(str);
var percent = obj.percent;
这将获取json字符串并将其转换为javascript对象,您可以从中轻松提取百分比字段

编辑:正如已经指出的,这可能不是有效的JSON字符串。下面将解决这个问题

var str = 'Object {name: "red", percent: 36, rgb: "rgb(216,28,63)"}';
var delimit1 = "percent: ";
var delimit2 = ",";
var tmp = str.substring(str.indexOf(delimit1) + delimit1.length);
var token = tmp.substring(0, tmp.indexOf(delimit2));
alert(token);

看起来您有一个实际的JavaScript对象,而不是JSON字符串。(这是一个常见的误解。例如,JSON用于在客户端和服务器之间传输数据结构。它本身不是一种数据类型。)

您可以使用点符号访问对象中的元素

var percent = availableColours[k].percent;
var color = availableColours[k].rgb;

这既不是JSON字符串,也不是JSON对象。您不应该试图用正则表达式解析该字符串,而应该在源位置(该字符串最初生成的位置)解决该问题

您不需要字符串:

'Object {name: "red", percent: 36, rgb: "rgb(216,28,63)"}'
您希望这样做:

'{"name": "red", "percent": 36, "rgb": "rgb(216,28,63)"}'
然后您可以正确地执行以下操作:

并访问以下属性:

color.name;
color.percent;
color.rgb;

您没有考虑将JSON解析为一个对象?这真的是字符串吗?或者您可以使用
JSON.parse()
从结果对象获取数据吗?而且,这不是JSON字符串。JSON键需要放在双引号中(
)是什么生成了这个字符串?在我看来,它是某个地方的对象描述。你真的确定你有一个字符串,而不是一个对象吗?你能举个例子吗?使用eval而不是解析JSON的原因吗?
eval
调用编译器。我们不使用它,它让字符串提供程序执行代码。使用
JSON.parse
将其更改为使用parse。此外,从外观上看,他已经有了一个对象。
JSON.parse
将在他提供的输入上失败,并出现一个无效的JSON错误。OP问题中的内容实际上不太可能是字符串。请注意(至少在Chrome中),如果你
console.log()
一个对象,你会得到“object{…}”“就像问题中一样。谢谢你-非常有用的回答!:)
color.name;
color.percent;
color.rgb;