Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t解析JSON对象、字符串化或获取javascript属性_Javascript_Json_Object - Fatal编程技术网

Can';t解析JSON对象、字符串化或获取javascript属性

Can';t解析JSON对象、字符串化或获取javascript属性,javascript,json,object,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();我知道 [对象] 如果我输入e.err

我使用的firefox插件为我提供了以下变量:

[{errorMessage:"TypeError: a is null", sourceName:"http://pagead2.googlesyndication.com/pagead/js/graphics.js", 
lineNumber:17, console:null}]
从firebug中,我可以看到这个变量及其名为“e”

我可以输入e,然后按上面的方式打印

如果我键入e.toString();我知道

[对象]

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

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

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


我尝试了JSON.parse、JSON.stringify,并对其进行了迭代,但没有任何内容向我提供实际的对象信息。

这是一个包含对象的数组,请尝试以下操作:

e[0].errorMessage;
来自JSON规范:[RFC4627][1]

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

字符串以引号开头和结尾


在官方ECMAScript规范中: 它定义了,其中PropertyNameAndValue可以是StringLiteral或IdentifierLiteral。 和,没有引号

不带引号的键名称在Javascript中是合法且允许的,但它们不是有效的JSON


结果

Parse error on line 3:
...a is null",        sourceName: "http://
----------------------^
Expecting 'STRING'

这不是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 );

我试过了,但是返回值是“未定义的”。我是在firefox控制台中这样做的。还要注意的是,键周围也应该有双引号,而不仅仅是值。所以在你的JSON errorMessage中,应该有双引号来表示有效的JSONI,在我已经有了这个对象之后,有没有办法修改它?看起来这很可能是Firefox控制台的一个bug。。我可以通过Chrome获得它。@A.O.-这不是JSON,所以JSON语法规则不适用。它不是JSON。这是一个JavaScript数组。@MichaelGeary如果不是JSON,它将不会使用JSON解析器进行解析。但是,JSON
中允许使用数组。JSON文本是序列化对象或数组。
没错,它不是JSON,所以JSON解析器不会解析它。JSON是用于序列化JavaScript对象和数组的字符串格式。但这已经是一个JavaScript数组,而不是JSON字符串。OP看到了Firebug(一个JavaScript对象文本)的输出,并将其误认为是JSON。这是与JSON的唯一联系:一个简单的错误。所以JSON语法规则在这里根本不适用。
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 );