Хорошо, вы передаете второй параметр в JSON.parse (), который является обратным вызовом reviver
. Согласно документам JSON , этот обратный вызов выполняется " ... для каждого ключа и значения на каждом уровне конечного результата. Каждое значение будет заменено результатом функции reviver. Это может использоваться для преобразования общих объектов в экземпляры псевдоклассов или для преобразования строк даты в объекты Date."
Поскольку ваш reviver
обратный вызов ничего не возвращает, ваш объект неправильно обрабатывается и искажается. Я не верю, что вы пользуетесь reviver
здесь. Я никогда не видел его где-либо в использовании, и я использую JSON.parse
много.
Ваш код должен выглядеть следующим образом:
function parse_json()
{
var jtext = $("#mtxt").text(),
jdata = JSON.parse( $.trim( jtext ) ),
key,
value;
for( key in jdata )
{
if( Object.prototype.hasOwnProperty.call( jdata, key ) )
{
value = jdata[key];
//prefer console.log here...
alert( 'key: ' + key + ', value: ' + value)
}
}
}
$( function()
{
$( '#run' ).click( function()
{
parse_json();
} );
} );
Демо: http://jsfiddle.net/hjVqf/