คุณจะบันทึกเนื้อหาของวัตถุ JSON ใน Node.js ได้อย่างไร


170

เป็นไปได้ไหมที่จะพิมพ์เนื้อหาของวัตถุเช่นวิธีการและคุณสมบัติใน Node.js?

ในขณะที่ฉันพยายามพิมพ์วัตถุเซสชั่นและได้รับต่อไปนี้:

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

อาจจะคล้ายกับ print_r (array) ใน PHP หรือใช้. toString ใน Java


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


33

ในการมีเอาต์พุตคล้ายกับ raw console.log(obj)ฉันมักจะใช้console.log('Status: ' + util.inspect(obj))(JSON แตกต่างกันเล็กน้อย)


4
สิ่งนี้ทำให้ "util ไม่ได้ถูกกำหนด" คุณต้อง `var util = require (" util ") ก่อน นอกจากนี้วัตถุย่อยยังคงปรากฏเป็น [วัตถุ] และไม่ใช่สตริง JSON ที่แสดงถึงพวกเขา
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.