Въведение в JSON обектите в Python
Java Script Object Notation (JSON) е лек формат на данни с много прилики с речниците на Python. JSON обектите са полезни, защото браузърите могат бързо да ги анализират, което е идеално за транспортиране на данни между клиент и сървър. В тази публикация ще обсъдим как да използваме JSON библиотеката на python за изпращане и получаване на JSON данни.
Да започваме!
Първо, нека проверим следния JSON пакет с информация за албума на The Beatle Yellow Submarine:
{ "album_title" : "Yellow Submarine", "release_year" : 1966, "won_grammy" : false, "band" : "The Beatles", "album_sale": null "musicians" : ["John Lennon", "Paul McCartney", "George Harrison", "Ringo Starr"], "studio" : {"studio_name": "Abbey Road Studios", "location": "London, England"} }
В JSON обектите ключовете са низове и стойностите могат да бъдат низове, числа (float или int), булеви стойности, списъци, null или друг JSON обект. Има няколко разлики между речниците на Python и JSON обектите, които могат да се видят от този пример. Например булевите стойности са с малки букви, а стойностите „Няма“ са „нулеви“. Еквивалентът на речника на Python е:
{ "album_title" : "Yellow Submarine", "release_year" : 1966, "won_grammy" : False, "band" : "The Beatles", "album_sale": None "musicians" : ["John Lennon", "Paul McCartney", "George Harrison", "Ringo Starr"], "studio" : {"studio_name": "Abbey Road Studios", "location": "London, England"} }
Сега нека запазим примерните JSON данни в текстов файл, наречен „album.txt“. Направих това с помощта на командния ред на терминала и текстовия редактор „vim“, но можете да използвате всеки инструмент, който искате. След това, в скрипт на Python, нека импортираме JSON модула:
import json
Нека да разгледаме наличните методи в този модул с помощта на метода „dir()“:
print(dir(json))
Ще се фокусираме върху методите за зареждане и изхвърляне. За да продължите, нека използваме отворения метод, за да отворим файла. В отворения метод нека посочим името на файла, „album.txt“ и режима (четене или запис). Ще четем файла, така че режимът е „r“:
album_json_file = open("album.txt", "r")
След това можем да използваме метода за зареждане, за да заредим JSON данните от нашия файл:
album = json.load(album_json_file)
След като заредим JSON данните, затваряме файла:
album_json_file.close()
Вече можем да отпечатаме нашите заредени JSON данни:
print(album)
Ако отпечатаме типа на този обект, ще видим, че това е речник на Python:
print(type(album))
Нека да разгледаме разликите между JSON обекта и речника на python. Стойността „won_grammy“ в JSON обекта е „false“, докато в речника е „False“ с главна буква. Освен това ‘album_sale’ ‘стойността Null’ беше анализирана като ‘Няма’ в речника на Python.
Сега, след като заредихме нашите данни като речник, можем да получим достъп до стойностите в анализирания речник по ключ. Например, ако искаме да имаме достъп до „album_title“, правим следното:
print("Album Title: ", album['album_title'])
Или ако искаме да имаме достъп до годината на издаване на албума:
print("Release Year: ", album['release_year'])
В клиентските сървърни приложения е обичайно JSON обектите да пристигат под формата на низове. Например нашият JSON обект за информация за албум може да изглежда така:
album_string = """{"album_title" : "Yellow Submarine", "release_year" : 1966, "won_grammy" : false, "band" : "The Beatles", "album_sale": null, "musicians" : ["John Lennon", "Paul McCartney", "George Harrison", "Ringo Starr"], "studio" : {"studio_name": "Abbey Road Studios", "location": "London, England"} }"""
За да заредим тези данни с помощта на JSON модула, използваме метода „loads()“:
album_s = json.loads(album_string) album_string.close() print(album_s)
Сега да предположим, че започваме с данни, форматирани в речник, и искаме да изпратим тези данни към база данни във формат JSON. Можем да използваме методите dumps, за да конвертираме речници в низови JSON обекти. Нека дефинираме нашия оригинален речник:
album2 = {'album_title': 'Yellow Submarine', 'release_year': 1966, 'won_grammy': False, 'band': 'The Beatles', 'album_sale': None, 'musicians': ['John Lennon', 'Paul McCartney', 'George Harrison', 'Ringo Starr'], 'studio': {'studio_name': 'Abbey Road Studios', 'location': 'London, England'}}
След това нека отпечатаме низовия JSON обект, използвайки метода dumps:
print(json.dumps(album2)) print(type(json.dumps(album2)))
Нашият речник беше правилно анализиран като низ JSON обект. Виждаме, че стойността на ‘album_sale’, ‘None’, вече е ‘null’, а стойността ‘won_grammy’, ‘False’, вече е ‘false’.
И накрая, можем да напишем този JSON обект във файл „.txt“, като използваме метода dump:
file2 = open("album2.txt", "w") json.dump(album2, file2)
Ще спра дотук, но не се колебайте сами да си поиграете с кода.
ИЗВОДИ
За да обобщим, в тази публикация обсъдихме как да изпращаме и получаваме JSON данни с помощта на JSON библиотеката на python. Обсъдихме методите за зареждане, които ни помагат да получаваме данни и методите за изхвърляне, които ни помагат да изпращаме данни. Ако се интересувате да научите повече за работата с JSON обекти в Python, препоръчвам „уроците на Socratica в YouTube“. Надявам се, че сте намерили тази публикация за полезна/интересна. Кодът от тази публикация е достъпен в GitHub. Благодаря ви, че прочетохте!