-3

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

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

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

我努力了:

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

哪里 availableColours[k] 指的是我的对象,但得到错误“意外的令牌 0” - 任何人都可以帮忙吗?

4

3 回答 3

2

这不是 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;
于 2013-05-22T17:14:33.510 回答
2

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

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

var percent = availableColours[k].percent;
var color = availableColours[k].rgb;
于 2013-05-22T17:11:45.650 回答
-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);
于 2013-05-22T16:57:43.907 回答