Wie print-Objekt in Node JS
In der folgende code (auf Node JS) ich versuche, drucken ein Objekt direkt aus einer externen API mit JSON.stringify
was zu einem Fehler führt:
TypeError: Umwandlung einer kreisförmigen Struktur zu JSON
Ich habe mir die Fragen zu diesem Thema, aber keiner konnte helfen. Könnte jemand bitte empfehlen:
a) Wie konnte ich erhalten country
Wert aus der res
Objekt ?
b) Wie könnte ich drucken das gesamte Objekt selbst ?
http.get('http://ip-api.com/json', (res) => {
console.log(`Got response: ${res.statusCode}`);
console.log(res.country) //*** Results in Undefined
console.log(JSON.stringify(res)); //*** Resulting in a TypeError: Converting circular structure to JSON
res.resume();
}).on('error', (e) => {
console.log(`Got error: ${e.message}`);
});
- stackoverflow.com/questions/4816099/...
- Verwenden Sie Körper-parser?
res.country
darf nicht undefiniert sein. - Ich bin nicht mit Körper-parser; res.Land-prints nicht definiert. Nicht sicher, warum es das tut ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basic
console.log
wird nicht gehen, durch den langen und komplexen Objekt, und kann entscheiden, drucken Sie einfach[Object]
statt.Ein guter Weg, um zu verhindern, dass in node.js ist die Verwendung
util.inspect
:EDIT: In eine Prise (in REPL, zum Beispiel), eine zweite option ist
JSON.stringify
. Keine Notwendigkeit zurequire
es, aber es wird brechen zirkuläre Referenz anstelle des Druckens der Tatsache, dass es ist ein Verweis.Durch die Verwendung des http
request
client, ich bin in der Lage, drucken Sie das JSON-Objekt als auch als print-diecountry
Wert. Unten ist mein code aktualisiert.Drucken Sie das gesamte Objekt, wird es keine Probleme mit rekursiven refferences:
Hier ist ein Beispiel für Sie, um zu sehen, wie die Konsole.log-Griffe kreisförmigen refferences:
Außerdem würde ich raten, um zu überprüfen, welche Daten Sie tatsächlich erhalten.
HTTP response
Objekt, wie in der Express-Dok. Sie sollten versuchen, zu druckenres.body
oder sift durch das gesamte Objekt.console.log(res) prints our very long data,
nicht wirklich erklären, das problem für mich. Kopieren Sie einfach die Daten in text-editor und finden, was Sie brauchen. Oder Lesen Sie Ihre HTTP-librarie in der Dokumentation.Sie nicht tatsächlich die Daten in
res
. Sie müssenon('data')
undon.('end')
body
ist ein string. Es wird Anhängen auf Daten erhalten, so dass auf eine vollständige, benötigen Sie zum analysieren von Daten in das jsonNoe aus
parsed
was ist ein json-Objekt, können Sie jede EigenschaftÜbergeben Sie zwei Argumente auf die Konsole.log()
Versuchen, diesen code nach der Installation des "yargs" Und es wird gedruckt gesamte Objekt
Konsole.log('Objekt' , yargs.argv);
Ich denke, vielleicht wird es helfen, Sie zu drucken gesamte Objekt)
Diese drucken Sie die Taste, der das Objekt und der Wert des Objekts, auf die einfachste Weise. Probieren Sie es einfach.