JSON to akronim oznaczający notację obiektu JavaScript. Pomimo swojej nazwy, JSON jest formatem niezależnym od języka, najczęściej używanym do przesyłania danych między systemami, a czasami do ich przechowywania. Programy napisane w Pythonie, a także w wielu innych językach programowania, mogą przyjmować dane w formacie JSON i serializować dane w pamięci do formatu JSON. Pyton obsługuje JSON poprzez wbudowany pakiet o nazwie json. Aby skorzystać z tej funkcji, zaimportuj pakiet json do skryptu lub modułu Pythona, w którym chcesz serializować lub deserializować swoje dane. JSON wykorzystuje pary klucz-wartość rozdzielane przecinkami zawarte w podwójnych cudzysłowach i oddzielone dwukropkami. Treść pliku JSON można rozdzielić nawiasami klamrowymi { } lub nawiasami kwadratowymi [] (w niektórych językach nazywanymi również nawiasami). Format JSON wydaje się być podobny do słownika w języku Python, ale specyfika formatu JSON różni się znacząco, dlatego należy zachować ostrożność podczas pracy z obydwoma formatami.
Notatka: Aby uzyskać więcej informacji, zobacz Przeczytaj, Pisz i analizuj JSON przy użyciu języka Python
Json.dumps()
Funkcja json.dumps() przekonwertuje podzbiór obiektów Pythona na ciąg json. Nie wszystkie obiekty można konwertować i może być konieczne utworzenie słownika danych, które chcesz udostępnić przed serializacją do formatu JSON.
Składnia:
json.dumps(obj, *, skipkeys=False, zapewnienia_ascii=True, check_circular=True, zezwolenie_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
Parametry:
obiekt: Serializuj obiekt jako strumień w formacie JSON
pomiń klawisze: Jeśli skipkeys ma wartość True (domyślnie: False), wówczas klucze dyktujące, które nie są typu podstawowego (str, int, float, bool, None) zostaną pominięte zamiast zgłaszać błąd TypeError.
zapewnienia_ascii: Jeśli Sure_ascii ma wartość True (domyślnie), na wyjściu gwarantuje się, że wszystkie przychodzące znaki inne niż ASCII będą miały wartość ucieczki. Jeśli Sure_ascii ma wartość False, znaki te zostaną wyświetlone w niezmienionej postaci.
sprawdź_okrągły: Jeśli check_circular ma wartość False (domyślnie: True), wówczas cykliczne sprawdzanie odwołań dla typów kontenerów zostanie pominięte, a odwołanie cykliczne spowoduje błąd OverflowError (lub gorszy).
Pozwolić: Jeśli zezwolenie_nan ma wartość False (domyślnie: True), wówczas wystąpi błąd ValueError polegający na serializacji wartości zmiennoprzecinkowych spoza zakresu (nan, inf, -inf) w ścisłej zgodności ze specyfikacją JSON. Jeśli zezwolenie_nan ma wartość True, użyte zostaną ich odpowiedniki w JavaScript (NaN, Infinity, -Infinity).
akapit: Jeśli wcięcie jest nieujemną liczbą całkowitą lub ciągiem znaków, wówczas elementy tablicy JSON i elementy obiektów zostaną ładnie wydrukowane z tym poziomem wcięcia. Poziom wcięcia 0, ujemny lub spowoduje wstawienie tylko znaków nowej linii. Brak (wartość domyślna) powoduje wybranie najbardziej zwartej reprezentacji. Użycie dodatniej liczby całkowitej powoduje wcięcie o tyle spacji na poziom. Jeśli wcięcie jest ciągiem znaków (np. ), ten ciąg służy do wcięcia każdego poziomu.
separatory: Jeśli określono, separatorami powinna być krotka (separator_elementu, separator_klucza). Wartość domyślna to (‚, „, „:”), jeśli wcięcie ma wartość Brak, oraz („, „, „:”) w przeciwnym razie. Aby uzyskać najbardziej zwartą reprezentację JSON, należy określić („, „, „:”), aby wyeliminować białe znaki.
domyślny: Jeśli określono, wartość domyślna powinna być funkcją wywoływaną dla obiektów, których w innym przypadku nie można serializować. Powinien zwrócić wersję obiektu kodowaną w formacie JSON lub zgłosić błąd TypeError. Jeśli nie zostanie określony, zostanie zgłoszony TypeError.
sort_keys: Jeśli sort_keys ma wartość True (domyślnie: False), wówczas dane wyjściowe słowników zostaną posortowane według klucza.
Przykład 1: Przekazanie słownika Pythona do funkcji json.dumps() zwróci ciąg znaków.
Python3
wydrukuj z Javy
import> json> # Creating a dictionary> Dictionary> => {> 1> :> 'Welcome'> ,> 2> :> 'to'> ,> > 3> :> 'Geeks'> ,> 4> :> 'for'> ,> > 5> :> 'Geeks'> }> > # Converts input dictionary into> # string and stores it in json_string> json_string> => json.dumps(Dictionary)> print> (> 'Equivalent json string of input dictionary:'> ,> > json_string)> print> (> ' '> )> # Checking type of object> # returned by json.dumps> print> (> type> (json_string))> |
>
>
Wyjście
Odpowiednik ciągu json w słowniku: {1: Welcome, 2: to, 3: Geeks, 4: for, 5: Geeks}
Przykład nr 2: Ustawiając klucze pomijania na True (domyślnie: False) automatycznie pomijamy klucze, które nie są typu podstawowego.
Python3
import> json> Dictionary> => {(> 1> ,> 2> ,> 3> ):> 'Welcome'> ,> 2> :> 'to'> ,> > 3> :> 'Geeks'> ,> 4> :> 'for'> ,> > 5> :> 'Geeks'> }> # Our dictionary contains tuple> # as key, so it is automatically> # skipped If we have not set> # skipkeys = True then the code> # throws the error> json_string> => json.dumps(Dictionary,> > skipkeys> => True> )> print> (> 'Equivalent json string of dictionary:'> ,> > json_string)> |
>
>
Wyjście
Odpowiednik ciągu json w słowniku: {2: to, 3: Geeks, 4: for, 5: Geeks}
Przykład nr 3:
Python3
import> json> # We are adding nan values> # (out of range float values)> # in dictionary> Dictionary> => {(> 1> ,> 2> ,> 3> ):> 'Welcome'> ,> 2> :> 'to'> ,> > 3> :> 'Geeks'> ,> 4> :> 'for'> ,> > 5> :> 'Geeks'> ,> 6> :> float> (> 'nan'> )}> # If we hadn't set allow_nan to> # true we would have got> # ValueError: Out of range float> # values are not JSON compliant> json_string> => json.dumps(Dictionary,> > skipkeys> => True> ,> > allow_nan> => True> )> print> (> 'Equivalent json string of dictionary:'> ,> > json_string)> |
>
>
Wyjście :
Równoważny ciąg json słownika: {2: to, 3: Geeks, 4: for, 5: Geeks, 6: NaN}
Przykład nr 4:
Python3
import> json> Dictionary> => {(> 1> ,> 2> ,> 3> ):> 'Welcome'> ,> 2> :> 'to'> ,> > 3> :> 'Geeks'> ,> 4> :> 'for'> ,> > 5> :> 'Geeks'> ,> 6> :> float> (> 'nan'> )}> # Indentation can be used> # for pretty-printing> json_string> => json.dumps(Dictionary,> > skipkeys> => True> ,> > allow_nan> => True> ,> > indent> => 6> )> print> (> 'Equivalent json string of dictionary:'> ,> > json_string)> |
>
>
Wyjście:
Equivalent json string of dictionary: { '2': 'to', '3': 'Geeks', '4': 'for', '5': 'Geeks', '6': NaN }>
Przykład nr 5:
Python3
import> json> Dictionary> => {(> 1> ,> 2> ,> 3> ):> 'Welcome'> ,> 2> :> 'to'> ,> > 3> :> 'Geeks'> ,> 4> :> 'for'> ,> > 5> :> 'Geeks'> ,> 6> :> float> (> 'nan'> )}> # If specified, separators should be> # an (item_separator, key_separator)tuple> # Items are separated by '.' and key,> # values are separated by '='> json_string> => json.dumps(Dictionary,> > skipkeys> => True> ,> > allow_nan> => True> ,> > indent> => 6> ,> > separators> => (> '. '> ,> ' = '> ))> print> (> 'Equivalent json string of dictionary:'> ,> > json_string)> |
ciąg do tablicy Java
>
>
Wyjście:
Equivalent json string of dictionary: { '2' = 'to'. '3' = 'Geeks'. '4' = 'for'. '5' = 'Geeks'. '6' = NaN }>
Przykład nr 6:
Python3
import> json> Dictionary> => {> 'c'> :> 'Welcome'> ,> 'b'> :> 'to'> ,> > 'a'> :> 'Geeks'> }> json_string> => json.dumps(Dictionary,> > indent> => 6> ,> > separators> => (> '. '> ,> ' = '> ),> > sort_keys> => True> )> print> (> 'Equivalent json string of dictionary:'> ,> > json_string)> |
>
>
Wyjście:
Equivalent json string of dictionary: { 'a' = 'Geeks'. 'b' = 'to'. 'c' = 'Welcome' }>