Распечатайте обработанный объект 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));
которая делает огромную работу по созданию чего-то, что я действительно могу прочитать, когда пишу код сервера.