1

我正在使用一个为我提供此变量的 Firefox 插件:

[{errorMessage:"TypeError: a is null", sourceName:"http://pagead2.googlesyndication.com/pagead/js/graphics.js", 
lineNumber:17, console:null}]

从萤火虫,我可以看到这个变量和它被称为“e”。

我可以输入e,然后像上面一样打印它。

如果我输入 e.toString(); 我明白了,

[对象对象]

如果我键入 e.errorMessage,它是未定义的。

如果我输入 JSON.parse(e),我会收到意外的字符错误。

如何从该对象中获取信息?似乎我对它所做的任何事情,它只返回 [object Object] 或未定义。

我已经尝试过 JSON.parse、JSON.stringify、遍历它,但没有任何东西可以为我提供实际的对象信息。

4

3 回答 3

2

这是一个包含对象的数组,试试这个:

e[0].errorMessage;
于 2013-10-07T23:43:38.517 回答
0

来自 JSON 规范:[RFC 4627][1]

2.2. 对象

对象结构表示为一对围绕零个或多个名称/值对(或成员)的花括号。 名称是一个字符串。 每个名称后面都有一个冒号,将名称与值分开。单个逗号将值与后面的名称分开。对象中的名称应该是唯一的。

2.5. 字符串

字符串以引号开头和结尾。


在官方 ECMAScript 规范中:

它定义了一个Object Literal,它的 PropertyNameAndValue 可以是 StringLiteral 或 IdentifierLiteral。并且IdentifierLiteral没有引号。

未加引号的键名在 Javascript 中是合法的并且是允许的,但它们不是有效的 JSON。


http://jsonlint.com

[
    {
        errorMessage: "TypeError: a is null",
        sourceName: "http://pagead2.googlesyndication.com/pagead/js/graphics.js",
        lineNumber: 17,
        console: null
    }
]

结果

Parse error on line 3:
...a is null",        sourceName: "http://
----------------------^
Expecting 'STRING'
于 2013-10-07T23:57:40.203 回答
0

这不是 JSON。它是一个 JavaScript 数组。它与 JSON 没有任何关系。

要访问 JavaScript 数组,只需使用普通的 JavaScript 代码,而不是JSON.parse类似的代码。

您可以使用JSON.stringify()将此数组转换为JSON,但这肯定不是您想要的。

e.toString()打印的原因[object Object]很简单,这是该.toString()方法为对象或数组返回的内容。.toString()并不总是给出有用的结果。

将以下内容粘贴到 Firebug 或 Chrome 控制台并查看它记录的内容:

var e = [
    {
        errorMessage: "TypeError: a is null",
        sourceName: "http://pagead2.googlesyndication.com/pagead/js/graphics.js",
        lineNumber: 17,
        console:null
    }
];

console.log( e.length );
console.log( e[0] );
console.log( e[0].errorMessage );
console.log( e[0].sourceName );
console.log( e[0].lineNumber );
于 2013-10-08T00:07:41.790 回答