JSON解析错误使用jQuery.parseJSON

此代码失败并显示无效的JSON异常:

var example = '{ "AKEY": undefined }';
jQuery.parseJSON(example);

我能够通过用空字符串替换所有未定义来修复它。 未定义不是JSON的一部分吗?


如果你可以围绕这一点, undefined的标记实际上是未定义的。

请允许我详细说明:即使JavaScript有一个特殊的原始值undefined, undefined 也不是JavaScript关键字,也没有任何特殊含义。 您可以通过比较undefined的对象来分解测试对象存在的代码。

var obj = { BKEY: 'I exist!' };
if (obj.AKEY == undefined) console.log ('no AKEY');
if (obj.BKEY == undefined) console.log ('should not happen');

undefined='uh oh';

if (obj.AKEY == undefined) console.log ('oops!'); // Logically, we want this to execute, but it will not!
if (obj.BKEY == undefined) console.log ('should not happen');

唯一的控制台输出将是'不AKEY'。 在我们分配给全局变量undefinedobj.AKEY == undefined变成了false,因为undefined != 'uh oh'obj.BKEY == undefined仍然返回false,但只是因为我们很幸运。 如果我设置了obj.BKEY='uh oh' ,那么obj.BKEY == undefined将是真实的 ,即使它真的存在!

您可能想要将AKEY设置为null 。 (顺便说一下, null 关键字; null='uh oh'会引发异常)。

您也可以简单地从您的JSON中忽略AKEY ,在这种情况下您会发现:

typeof(example.AKEY) == 'undefined'

(如果将AKEY设置为null ,则typeof(example.AKEY) == 'object' 。)

设置为null和省略之间唯一真正的区别是您是否希望该键出现在foreach循环中。


不,但是是null的。 RFC 4627§2.1:

JSON值必须是一个对象,数组,数字或字符串,或以下三个文字名称之一:

  false null true
var example = '{ "AKEY": null }';

正确。 未定义,函数不以JSON表示。 http://www.json.org/js.html

链接地址: http://www.djcxy.com/p/51861.html

上一篇: JSON Parse Error Using jQuery.parseJSON

下一篇: How to make a Video call in Android using Intent?