Python JSON: odczyt, zapis, analizowanie JSON (z przykładami)

W tym samouczku nauczysz się analizować, czytać i pisać JSON w Pythonie za pomocą przykładów. Nauczysz się również konwertować JSON do dyktowania i ładnie go drukować.

JSON ( J Ava S CRIPT O bject N otation) jest popularnym formatem danych wykorzystywane do przedstawiania danych strukturalnych. Przesyłanie i odbieranie danych między serwerem a aplikacją internetową w formacie JSON jest powszechne.

W Pythonie JSON istnieje jako ciąg. Na przykład:

 p = '("name": "Bob", "languages": ("Python", "Java"))' 

Często zdarza się również przechowywać obiekt JSON w pliku.

Importuj moduł JSON

Aby pracować z JSON (ciągiem lub plikiem zawierającym obiekt JSON), możesz użyć jsonmodułu Pythona . Musisz zaimportować moduł, zanim będziesz mógł go używać.

 import json

Przeanalizuj JSON w Pythonie

jsonModuł ułatwia analizowania ciągów JSON i pliki zawierające obiekt JSON.

Przykład 1: Python JSON do dyktowania

Możesz przeanalizować ciąg JSON za pomocą json.loads()metody. Metoda zwraca słownik.

 import json person = '("name": "Bob", "languages": ("English", "Fench"))' person_dict = json.loads(person) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print( person_dict) # Output: ('English', 'French') print(person_dict('languages'))

Tutaj osoba to ciąg JSON, a person_dict to słownik.

Przykład 2: Python odczytuje plik JSON

Możesz użyć json.load()metody, aby odczytać plik zawierający obiekt JSON.

Załóżmy, że masz plik o nazwie, person.jsonktóry zawiera obiekt JSON.

  ("name": "Bob", "languages": ("English", "Fench") ) 

Oto jak możesz przeanalizować ten plik:

  import json with open('path_to_file/person.json') as f: data = json.load(f) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print(data) 

Tutaj użyliśmy open()funkcji do odczytania pliku json. Następnie plik jest analizowany przy użyciu json.load()metody, która daje nam słownik o nazwie data.

Jeśli nie wiesz, jak czytać i zapisywać pliki w Pythonie, zalecamy sprawdzenie Python File I / O.

Python Konwertuj na ciąg JSON

Możesz przekonwertować słownik na ciąg JSON za pomocą json.dumps()metody.

Przykład 3: Konwertuj dict na JSON

  import json person_dict = ('name': 'Bob', 'age': 12, 'children': None ) person_json = json.dumps(person_dict) # Output: ("name": "Bob", "age": 12, "children": null) print(person_json) 

Oto tabela przedstawiająca obiekty Pythona i ich równoważną konwersję do formatu JSON.

Pyton Odpowiednik JSON
dict obiekt
list, tuple szyk
str strunowy
int, float,int numer
True prawdziwe
False fałszywy
None zero

Zapisywanie JSON do pliku

Aby zapisać JSON do pliku w Pythonie, możemy użyć json.dump()metody method.

Przykład 4: Zapisywanie JSON do pliku

  import json person_dict = ("name": "Bob", "languages": ("English", "Fench"), "married": True, "age": 32 ) with open('person.txt', 'w') as json_file: json.dump(person_dict, json_file) 

W powyższym programie otworzyliśmy plik o nazwie person.txtw trybie pisania za pomocą 'w'. Jeśli plik jeszcze nie istnieje, zostanie utworzony. Następnie json.dump()przekształca person_dictsię w ciąg JSON, który zostanie zapisany w person.txtpliku.

Po uruchomieniu programu person.txtplik zostanie utworzony. Plik zawiera następujący tekst.

 ("name": "Bob", "languages": ("English", "Fench"), "married": true, "age": 32)

Python ładnie drukuje JSON

Aby przeanalizować i debugować dane JSON, może być konieczne wydrukowanie ich w bardziej czytelnym formacie. Można to zrobić przekazując dodatkowe parametry indenti sort_keysdo json.dumps()i json.dump()metoda.

Przykład 5: Python ładnie drukuje JSON

  import json person_string = '("name": "Bob", "languages": "English", "numbers": (2, 1.6, null))' # Getting dictionary person_dict = json.loads(person_string) # Pretty Printing JSON string back print(json.dumps(person_dict, indent = 4, sort_keys=True)) 

Po uruchomieniu programu wynik będzie następujący:

 („języki”: „angielski”, „nazwa”: „Robert”, „liczby”: (2, 1,6, null)) 

W powyższym programie użyliśmy 4spacji do wcięć. Klucze są posortowane w kolejności rosnącej.

Nawiasem mówiąc, domyślna wartość indent to None. Domyślna wartość sort_keys to False.

Zalecane lektury:

  • Python JSON do CSV i odwrotnie
  • Python XML do JSON i odwrotnie
  • Python simplejson

Interesujące artykuły...