Làm thế nào để bạn đăng nhập nội dung của một đối tượng JSON trong Node.js?


170

Có thể in một nội dung đối tượng, ví dụ như các phương thức và thuộc tính trong Node.js không?

Hiện tại tôi đang cố gắng in đối tượng phiên và nhận được những điều sau đây:

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

Có thể theo cách tương tự như print_r (mảng) trong PHP hoặc sử dụng .toString trong Java.


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

1
Để có đầu ra trực quan và trực quan hơn của các đối tượng, hãy xem gật đầu: github.com/ragamufin/nodingump
ragamufin

Câu trả lời:


271

Hãy thử cái này:

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

Nếu đối tượng có thể được chuyển đổi thành JSON, điều đó sẽ hoạt động.


9
Tôi đang cố gắng làm điều này cho đối tượng yêu cầu nhưng nó hiển thị lỗi TypeError: Chuyển đổi cấu trúc vòng tròn thành JSON Có cách nào để giới hạn độ sâu
Neil

Dù sao để in đẹp này?
chovy

5
@chovy: một cái gì đó như thế này có thể hoạt động: console.log (JSON.opesify (json, null, 4));
Eric Brandel

1
cái này hiệu quả với tôi: console.log("Session: %O", session); developer.mozilla.org/en-US/docs/Web/API/NH
JP Lew

Đã làm việc cho phản hồi API json của tôi! Cảm ơn
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

JSON.opesify trên MDN


1
cho đến nay câu trả lời tốt nhất +1!
giải mã7283

33

Để có một đầu ra giống với nguyên liệu console.log(obj)tôi thường sử dụng console.log('Status: ' + util.inspect(obj))(JSON hơi khác một chút).


4
Điều này mang lại "lợi ích không được xác định". Trước tiên, bạn phải `var produc = Yêu cầu (" produc "). Ngoài ra, các đối tượng phụ vẫn biến thành [Đối tượng] chứ không phải chuỗi JSON đại diện cho chúng.
juanpaco

13
Để xóa giới hạn độ sâu, sử dụng:require('util').inspect(obj, {depth:null})
lapo

25

Điều này sẽ làm việc với bất kỳ đối tượng:

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

2
Điều này làm việc tuyệt vời cho các đối tượng lỗi. Không có thuộc tính của họ hiển thị trong các giải pháp khác.
Chris

1
Điều này chỉ treo cho tôi. Tôi nghĩ rằng các tham chiếu tròn trong một đối tượng bị hỏng
Richard

@Richard nó có thể bị treo (ed) cho bạn do tùy chọn độ sâu được đặt thành null. Inspect đã tích hợp điều trị cho các tài liệu tham khảo thông tư.
2grit

6

console.dir () là cách trực tiếp nhất.


console.dir (someJsonObject); vẫn để những vật thể lồng nhau không in dấu, cho tôi.
nyarasha

1
Tôi nghĩ rằng nó sẽ không đi sâu vào các vật thể thông qua nguyên mẫu của chúng và nó sẽ không đối phó với sự đệ quy nhất định. Bạn sẽ phải làm một cái gì đó như console.log (JSON.opesify ()) hoặc một cái gì đó cụ thể hơn cho đối tượng của bạn nếu .dir () không đủ. Nếu bạn có thêm thông tin về đối tượng, có lẽ lời khuyên cụ thể hơn có thể được đưa ra.
rainabba

Nó có thể có các tùy chọn tương tự như produc.inspect. Thêm {độ sâu: null}
nikc.org


0

Điều này sẽ cho hầu hết các đối tượng để xuất ra trong giao diện điều khiển nodejs

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

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.