Распечатайте обработанный объект JSON?

У меня есть объект javascript, который был обработан JSON с помощью JSON.parse Теперь я хочу напечатать объект, чтобы я мог его отлаживать (что-то не так с функцией). Когда я делаю следующее...

for (property in obj) {
    output += property + ': ' + obj[property]+'; ';
}
console.log(output);

Я получаю несколько объектов [Object Object]. Мне интересно, как я напечатаю это, чтобы просмотреть содержимое?

Ответ 1

Большинство консолей отладчика поддерживают отображение объектов напрямую. Просто используйте

console.log(obj);

В зависимости от вашего отладчика это скорее всего отобразит объект в консоли как свернутое дерево. Вы можете открыть дерево и проверить объект.

Ответ 2

Вы знаете, что означает JSON? Обозначение объектов JavaScript. Это делает довольно хороший формат для объектов.

JSON.stringify(obj) вернет вам строковое представление объекта.

Ответ 3

попробуйте console.dir() вместо console.log()

console.dir(obj);

MDN говорит, что console.dir() поддерживается:

  • FF8 +
  • IE9 +
  • Opera
  • Chrome
  • Safari

Ответ 4

Если вам нужен симпатичный многострочный JSON с отступом, вы можете использовать JSON.stringify со своим третьим аргументом:

JSON.stringify(value[, replacer[, space]])

Например:

var obj = {a:1,b:2,c:{d:3, e:4}};

JSON.stringify(obj, null, "    ");

или

JSON.stringify(obj, null, 4);

даст вам следующий результат:

"{
    "a": 1,
    "b": 2,
    "c": {
        "d": 3,
        "e": 4
    }
}"

В браузере console.log(obj) выполняется еще лучше, но в консоли оболочки (node.js) это не так.

Ответ 5

для печати JSON анализируемого объекта просто введите

console.log( JSON.stringify(data, null, " ") );

и вы получите очень понятный результат

Ответ 6

Использовать строковые форматы;

console.log("%s %O", "My Object", obj);

Chrome имеет Спецификаторы формата со следующими параметрами:

  • %s Форматирует значение в виде строки.
  • %d или %i Форматирует значение как целое число.
  • %f Форматирует значение как значение с плавающей запятой.
  • %o Форматирует значение как расширяемый элемент DOM (как в Элементы панели).
  • %o Форматирует значение как расширяемый JavaScript объект.
  • %c Форматирует строку вывода в соответствии со стилями CSS, которые вы обеспечить.

В Firefox также есть String Substitions, которые имеют похожие параметры.

  • %o Выводит гиперссылку на объект JavaScript. При нажатии на ссылку открывается инспектор.
  • %d или %i Выводит целое число. Форматирование еще не поддерживается.
  • %s Выводит строку.
  • %f Выводит значение с плавающей запятой. Форматирование еще не поддерживается.

Safari имеет форматирование стиля printf

  • %d или %i Целое число
  • %[0.N]f Значение с плавающей запятой с N цифрами точности
  • %o Объект
  • %s Строка

Ответ 7

Простая функция для предупреждения содержимого объекта или массива.
Вызовите эту функцию с помощью массива или строки или объекта, который он оповещает о содержимом.

Функция

function print_r(printthis, returnoutput) {
    var output = '';

    if($.isArray(printthis) || typeof(printthis) == 'object') {
        for(var i in printthis) {
            output += i + ' : ' + print_r(printthis[i], true) + '\n';
        }
    }else {
        output += printthis;
    }
    if(returnoutput && returnoutput == true) {
        return output;
    }else {
        alert(output);
    }
}

Использование

var data = [1, 2, 3, 4];
print_r(data);

Ответ 8

Следующий код отобразит полные данные json в поле предупреждения

var data= '{"employees":[' +
'{"firstName":"John","lastName":"Doe" },' +
'{"firstName":"Anna","lastName":"Smith" },' +
'{"firstName":"Peter","lastName":"Jones" }]}';

json = JSON.parse(data);
window.alert(JSON.stringify(json));

Ответ 9

Просто используйте

console.info("CONSOLE LOG : ")
console.log(response);
console.info("CONSOLE DIR : ")
console.dir(response);

и вы получите это в консоли хром:

CONSOLE LOG : 
facebookSDK_JS.html:56 Object {name: "Diego Matos", id: "10155988777540434"}
facebookSDK_JS.html:57 CONSOLE DIR : 
facebookSDK_JS.html:58 Objectid: "10155988777540434"name: "Diego Matos"__proto__: Object

Ответ 10

Если вы хотите отлаживать, почему бы не использовать консоль debug

window.console.debug(jsonObject);

Ответ 11

Красиво и просто:

console.log("object: %O", obj)

Ответ 12

Если вы работаете в js на сервере, немного больше гимнастики проходит долгий путь... Вот мой ppos (pretty-print-on-server):

ppos = (object, space = 2) => JSON.stringify(object, null, space).split('\n').forEach(s => console.log(s));

которая делает огромную работу по созданию чего-то, что я действительно могу прочитать, когда пишу код сервера.