Node.js에서 JSON 객체의 내용을 어떻게 기록합니까?


170

Node.js의 메소드 및 속성과 같은 객체 내용을 인쇄 할 수 있습니까?

현재 세션 객체를 인쇄하려고 시도하고 다음을 얻습니다.

console.log("Session:" + session);
> Session:[object Object]

PHP에서 print_r (array)와 비슷하거나 Java에서 .toString을 사용하는 것과 비슷한 방식 일 수 있습니다.


9
console.log("Session:" + util.inspect(session))
Raynos

1
보다 직관적이고 시각적 인 객체 출력을 보려면 nodedump를 살펴보십시오. github.com/ragamufin/nodedump
ragamufin

답변:


271

이거 한번 해봐:

console.log("Session: %j", session);

객체를 JSON으로 변환 할 수 있다면 작동합니다.


9
요청 객체에 대해이 작업을 수행하려고하지만 오류 TypeError : 원형 구조를 JSON으로 변환 깊이를 제한하는 방법이 있습니까?
Neil

어쨌든이 예쁜 인쇄?
chovy

5
@ chovy : 다음과 같이 작동 할 수 있습니다 : console.log (JSON.stringify (json, null, 4));
Eric Brandel

1
이것은 나를 위해 일했다 : console.log("Session: %O", session); developer.mozilla.org/en-US/docs/Web/API/…
JP Lew

내 json API 응답을 위해 일했습니다! 감사합니다
rodrigorf

128
function prettyJSON(obj) {
    console.log(JSON.stringify(obj, null, 2));
}

// obj -> value to convert to a JSON string
// null -> (do nothing)
// 2 -> 2 spaces per indent level

MDN의 JSON.stringify


1
지금까지 최고의 답변 +1!
decoder7283

33

console.log(obj)내가 일반적으로 사용 하는 원시와 더 유사한 출력을 얻으려면 console.log('Status: ' + util.inspect(obj))(JSON은 약간 다릅니다).


4
이것은 "util is not defined"를 제공합니다. 먼저`var util = require ( "util")해야합니다. 또한 하위 개체는 여전히이를 나타내는 JSON 문자열이 아니라 [Object]로 나타납니다.
juanpaco

13
깊이 제한을 제거하려면 다음을 사용하십시오.require('util').inspect(obj, {depth:null})
lapo

25

이것은 모든 객체에서 작동합니다.

    var util = require("util");
    console.log(util.inspect(myObject, {showHidden: false, depth: null}));

2
이것은 오류 객체에 효과적입니다. 다른 솔루션에는 해당 속성이 표시되지 않습니다.
Chris

1
이것은 단지 나를 위해 달려 있습니다. 개체의 순환 참조가 충돌한다고 생각합니다.
Richard

@Richard 깊이 옵션이 (으)로 설정되어 있기 때문에 아마도 중단 될 수 null있습니다. Inspect에는 순환 참조에 대한 기본 제공 처리 기능이 있습니다.
2grit

6

console.dir ()이 가장 직접적인 방법입니다.


console.dir (someJsonObject); 여전히 중첩 된 객체를 인쇄하지 않은 채 남겨 둡니다.
nyarasha

1
프로토 타입을 통해 객체를 뚫지 않고 특정 재귀를 처리하지 않을 것이라고 생각합니다. console.log (JSON.stringify ())와 같은 작업이나 .dir ()이 충분하지 않은 경우 객체에 더 특정한 작업을 수행해야합니다. 객체에 대한 자세한 정보가있는 경우보다 구체적인 조언을 제공 할 수 있습니다.
rainabba

util.inspect와 동일한 옵션을 사용할 수 있습니다. {depth : null} 추가
nikc.org


0

이것은 nodejs 콘솔에서 출력하기위한 대부분의 객체에 대해

var util = require('util')
function print (data){
  console.log(util.inspect(data,true,12,true))
  
}

print({name : "Your name" ,age : "Your age"})

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.