从JSON对象获取属性

时间:2013-05-22 16:55:02

标签: javascript regex

编辑:正如我所指出的,我有以下JSON对象:

Object {name: "red", percent: 36, rgb: "rgb(216,28,63)"} 

我需要将百分数和rgb数字提取到2个单独的变量中。

我试过了:

var noDivsToColour = JSON.parse(availableColours[k], "percent");

其中availableColours [k]引用我的对象但得到错误'Unexpected Token 0' - 有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

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

您可以使用点表示法访问对象中的元素。

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

答案 1 :(得分:1)

这不是JSON字符串,也不是JSON对象。你应该在源代码处解决问题,而不是尝试用正则表达式解析该字符串(无论是首次生成该字符串)。

您不需要字符串:

'Object {name: "red", percent: 36, rgb: "rgb(216,28,63)"}'

你想要这个:

'{"name": "red", "percent": 36, "rgb": "rgb(216,28,63)"}'

然后你可以正确地JSON.parse

var json = '{"name": "red", "percent": 36, "rgb": "rgb(216,28,63)"}';
var color = JSON.parse(json);

访问属性:

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

答案 2 :(得分:-1)

你可以试试这个:

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);