编辑:正如所指出的,我有以下 JSON 对象:
Object {name: "red", percent: 36, rgb: "rgb(216,28,63)"}
我需要将百分比数和 rgb 数提取到 2 个单独的变量中。
我努力了:
var noDivsToColour = JSON.parse(availableColours[k], "percent");
哪里 availableColours[k] 指的是我的对象,但得到错误“意外的令牌 0” - 任何人都可以帮忙吗?
编辑:正如所指出的,我有以下 JSON 对象:
Object {name: "red", percent: 36, rgb: "rgb(216,28,63)"}
我需要将百分比数和 rgb 数提取到 2 个单独的变量中。
我努力了:
var noDivsToColour = JSON.parse(availableColours[k], "percent");
哪里 availableColours[k] 指的是我的对象,但得到错误“意外的令牌 0” - 任何人都可以帮忙吗?
这不是 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;
看起来您有一个实际的 JavaScript 对象而不是 JSON 字符串。(这是一个常见的误解。例如,JSON 用于在客户端和服务器之间传输数据结构。它本身不是一种数据类型。)
您可以使用点符号访问对象中的元素。
var percent = availableColours[k].percent;
var color = availableColours[k].rgb;
你可以试试这个:
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);