无法解析JSON对象,Stringify或获取javascript属性

时间:2013-10-07 23:42:25

标签: javascript json object

我正在使用firefox插件,它为我提供了这个变量:

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

从firebug,我可以看到这个变量,它叫做“e”。

我可以输入e,并将其打印在上面。

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

[object Object]

如果我输入e.errorMessage,则未定义。

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

如何从这个对象中获取信息?似乎我对它做了什么,它只返回[object Object]或undefined。

我尝试过JSON.parse,JSON.stringify,迭代它,没有任何东西可以提供实际的对象信息。

3 个答案:

答案 0 :(得分:2)

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

e[0].errorMessage;

答案 1 :(得分:0)

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

2.2. Objects

  

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

2.5. Strings

  

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


在官方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'

答案 2 :(得分: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 );