Распечатать JSON-анализируемый объект? - PullRequest
182 голосов
/ 08 февраля 2011

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

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

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

Ответы [ 11 ]

518 голосов
/ 08 февраля 2011

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

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

112 голосов
/ 08 февраля 2011

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

console.log(obj);

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

51 голосов
/ 08 февраля 2011

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

console.dir(obj);

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

  • FF8 +
  • IE9 +
  • Opera
  • Chrome
  • Safari
42 голосов
/ 10 сентября 2015

Если вам нужен симпатичный многострочный 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) это не так.

34 голосов
/ 11 декабря 2015

Для печати проанализированного JSON объекта просто введитеconsole.log( JSON.stringify(data, null, " ") );и вы получите очень четкий вывод

21 голосов
/ 27 августа 2015

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

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

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

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

В Firefox также есть Строковые подстановки , которые имеют похожие параметры.

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

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

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

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

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
2 голосов
/ 26 мая 2015

Следующий код отобразит полные данные 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));
2 голосов
/ 07 июля 2013

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

Функция

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);
1 голос
/ 31 октября 2018

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

console.log("object: %O", obj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...