Mam obiekt javascript, który został przeanalizowany za pomocą JSON. JSON.parse
Chcę teraz wydrukować obiekt, aby móc go debugować (coś działa nie tak z funkcją). Kiedy wykonam następujące czynności ...
for (property in obj) {
output += property + ': ' + obj[property]+'; ';
}
console.log(output);
Dostaję na liście wiele [Object Object]. Zastanawiam się, jak mam to wydrukować, aby wyświetlić zawartość?
javascript
json
parsing
printing
Skizit
źródło
źródło
Odpowiedzi:
Większość konsol debugujących obsługuje bezpośrednie wyświetlanie obiektów. Po prostu użyj
W zależności od debuggera najprawdopodobniej wyświetli obiekt w konsoli jako zwinięte drzewo. Możesz otworzyć drzewo i obejrzeć obiekt.
źródło
console.log("object: " + obj)
nie wyświetla obiektu, ale zamiast tego wyświetla „obiekt: [Obiekt obj]”.console.log("object: %O", obj)
(Chrome) lubconsole.log("object: %o", obj)
(Firefox | Safari) da ci dostęp do szczegółów obiektu, zobacz moją odpowiedź poniżej.console.log("My object: ", obj)
Wiesz, co oznacza JSON? JavaScript Object Notation . To całkiem niezły format dla obiektów.
JSON.stringify(obj)
zwróci ci ciąg reprezentujący obiekt.źródło
spróbuj
console.dir()
zamiastconsole.log()
MDN mówi, że
console.dir()
jest obsługiwany przez:źródło
console.dir()
jest również dostępny w FF8 +, Opera, Chrome i Safari: developer.mozilla.org/en-US/docs/Web/API/console.dirJeśli chcesz ładnego, wielowierszowego JSON z wcięciem, możesz użyć
JSON.stringify
jego trzeciego argumentu:Na przykład:
lub
da ci następujący wynik:
W przeglądarce
console.log(obj)
działa jeszcze lepiej, ale w konsoli powłoki (node.js) tak nie jest.źródło
aby wydrukować przeanalizowany obiekt JSON, wystarczy wpisać,
console.log( JSON.stringify(data, null, " ") );
a wynik będzie bardzo wyraźny
źródło
Użyj formatów ciągów;
Chrome ma specyfikatory formatu z następującymi;
%s
Formatuje wartość jako ciąg.%d
lub%i
Formatuje wartość jako liczbę całkowitą.%f
Formatuje wartość jako wartość zmiennoprzecinkową.%o
Formatuje wartość jako rozwijany element DOM (jak w panelu Elementy).%O
Formatuje wartość jako rozszerzalny obiekt JavaScript.%c
Formatuje ciąg wyjściowy zgodnie z podanymi stylami CSS.Firefox ma również podstacje łańcuchowe, które mają podobne opcje.
%o
Wysyła hiperłącze do obiektu JavaScript. Kliknięcie linku otwiera inspektora.%d
lub%i
Zwraca liczbę całkowitą. Formatowanie nie jest jeszcze obsługiwane.%s
Wysyła ciąg znaków.%f
Zwraca wartość zmiennoprzecinkową. Formatowanie nie jest jeszcze obsługiwane.Safari ma formaty w stylu printf
%d
lub liczba%i
całkowita%[0.N]f
Wartość zmiennoprzecinkowa z dokładnością N cyfr%o
Obiekt%s
Strunowyźródło
Ładne i proste:
źródło
Po prostu użyj
a dostaniesz to w konsoli chrome:
źródło
Prosta funkcja ostrzegająca o zawartości obiektu lub tablicy.
Wywołaj tę funkcję z tablicą, łańcuchem lub obiektem ostrzegającym o zawartości.
Funkcjonować
Stosowanie
źródło
Poniższy kod wyświetli pełne dane Json w polu alertu
źródło
Jeśli chcesz debugować, skorzystaj z debugowania konsoli
źródło
Jeśli pracujesz w js na serwerze, trochę więcej gimnastyki przechodzi długą drogę ... Oto moje ppos (ładne drukowanie na serwerze):
która wykonuje super zadanie polegające na stworzeniu czegoś, co właściwie mogę przeczytać podczas pisania kodu serwera.
źródło
Nie wiem, jak to nigdy nie zostało oficjalnie utworzone, ale dodałem własną
json
metodę, byconsole
sprzeciwić się drukowaniu łańcuchów logów:Wiele razy konieczne jest wyświetlenie strunkowatej wersji obiektu, ponieważ wydrukowanie go w stanie „jak jest” (obiekt surowy) spowoduje wydrukowanie „żywej” wersji obiektu, która ulega mutacji w miarę postępu programu i nie będzie odzwierciedlać stanu obiektu w zarejestrowanym momencie, na przykład:
źródło