Trwałość danych w Pythonie - moduł JSON
JSON oznacza JavaScript Object Notation. Jest to lekki format wymiany danych. Jest to niezależny od języka i wieloplatformowy format tekstowy, obsługiwany przez wiele języków programowania. Ten format jest używany do wymiany danych między serwerem WWW a klientami.
Format JSON jest podobny do marynaty. Jednak serializacja pikle jest specyficzna dla Pythona, podczas gdy format JSON jest implementowany w wielu językach, dlatego stał się uniwersalnym standardem. Funkcjonalność i interfejs modułu json w standardowej bibliotece Pythona jest podobny do modułów pickle i marshal.
Podobnie jak w module pickle, moduł json zapewnia również dumps() i loads() funkcja do serializacji obiektu Python do łańcucha zakodowanego w formacie JSON oraz dump() i load() funkcje zapisują i odczytują zserializowane obiekty Pythona do / z pliku.
dumps() - Ta funkcja konwertuje obiekt do formatu JSON.
loads() - Ta funkcja konwertuje ciąg JSON z powrotem na obiekt Pythona.
Poniższy przykład przedstawia podstawowe użycie tych funkcji -
import json
data=['Rakesh',{'marks':(50,60,70)}]
s=json.dumps(data)
json.loads(s)
Funkcja dumps () może przyjmować opcjonalny argument sort_keys. Domyślnie jest to Fałsz. Jeśli jest ustawiona na True, klucze słownika są wyświetlane w kolejności posortowanej w ciągu JSON.
Funkcja dumps () ma inny opcjonalny parametr o nazwie indent, który przyjmuje liczbę jako wartość. Decyduje o długości każdego segmentu sformatowanej reprezentacji łańcucha json, podobnie jak na wydruku wyjściowym.
Moduł json posiada również obiektowe API odpowiadające powyższym funkcjom. W module zdefiniowane są dwie klasy - JSONEncoder i JSONDecoder.
JSONEncoder
Obiektem tej klasy jest koder struktur danych Pythona. Każdy typ danych Python jest konwertowany na odpowiedni typ JSON, jak pokazano w poniższej tabeli -
Pyton | JSON |
---|---|
Dykt | obiekt |
lista, krotka | szyk |
Str | strunowy |
Wyliczenia typu int, float, int- i float-pochodne | numer |
Prawdziwe | prawdziwe |
Fałszywy | fałszywy |
Żaden | zero |
Instancja klasy JSONEncoder jest tworzona przez konstruktora JSONEncoder (). Następujące ważne metody są zdefiniowane w klasie enkodera -
Sr.No. | Metody i opis |
---|---|
1 | encode() serializuje obiekt Pythona do formatu JSON |
2 | iterencode() Koduje obiekt i zwraca iterator, który daje zakodowaną postać każdego elementu w obiekcie. |
3 | indent Określa poziom wcięcia zakodowanego ciągu |
4 | sort_keys ma wartość true lub false, aby klucze były wyświetlane w kolejności posortowanej lub nie. |
5 | Check_circular jeśli prawda, sprawdź odwołanie cykliczne w obiekcie typu kontenera |
Poniższy przykład koduje obiekt listy Pythona.
e=json.JSONEncoder()
e.encode(data)
Klasa JSONDecoder
Obiekt tej klasy pomaga w dekodowaniu w łańcuchu json z powrotem do struktury danych Pythona. Główną metodą w tej klasie jest decode (). Poniższy przykładowy kod pobiera obiekt listy języka Python z zakodowanego ciągu we wcześniejszym kroku.
d=json.JSONDecoder()
d.decode(s)
Moduł json definiuje load() i dump() funkcje do zapisywania danych JSON w pliku takim jak obiekt - który może być plikiem dyskowym lub strumieniem bajtów i odczytywaniem z nich danych.
wysypisko()
Ta funkcja zapisuje dane obiektu języka Python w formacie JSON do pliku. Plik należy otworzyć w trybie „w”.
import json
data=['Rakesh', {'marks': (50, 60, 70)}]
fp=open('json.txt','w')
json.dump(data,fp)
fp.close()
Ten kod utworzy plik „json.txt” w bieżącym katalogu. Przedstawia zawartość w następujący sposób -
["Rakesh", {"marks": [50, 60, 70]}]
Załaduj()
Ta funkcja ładuje dane JSON z pliku i zwraca z niego obiekt Pythona. Plik musi być otwarty z uprawnieniami do odczytu (powinien mieć tryb „r”).
Example
fp=open('json.txt','r')
ret=json.load(fp)
print (ret)
fp.close()
Output
['Rakesh', {'marks': [50, 60, 70]}]
Plik json.tool moduł posiada również interfejs wiersza poleceń, który sprawdza poprawność danych w pliku i drukuje obiekt JSON w całkiem sformatowany sposób.
C:\python37>python -m json.tool json.txt
[
"Rakesh",
{
"marks": [
50,
60,
70
]
}
]