编辑:正如我所指出的,我有以下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' - 有人可以帮忙吗?
答案 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);