This code fails with an exception indicating invalid JSON:
var example = \'{ \"AKEY\": undefined }\';
jQuery.parseJSON(example);
I was able
If you can wrap your head around this, the token undefined is actually undefined.
Allow me to elaborate: even though JavaScript has a special primitive value called undefined, undefined is not a JavaScript keyword nor does it have any special meaning. You can break code which tests for the existance of an object by comparing to undefined by defining it.
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');
The only console output will be 'no AKEY'. After we've assigned to the global variable undefined, obj.AKEY == undefined becomes false because undefined != 'uh oh'. obj.BKEY == undefined still returns false, but only because we're lucky. If I had set obj.BKEY='uh oh', then obj.BKEY == undefined would be true, even though it actually exists!
You probably want to explicity set AKEY to null. (By the way, null is a keyword; null='uh oh' throws an exception).
You could also simply omit AKEY from your JSON, in which case you would find:
typeof(example.AKEY) == 'undefined'
(If you set AKEY to null, then typeof(example.AKEY) == 'object'.)
The only real difference between setting to null and omitting is whether you want the key to appear in a foreach loop.