Относно JSON
JSON (JavaScript Object Notation) е файлов формат и стандарт за съхранение на данни, който използва двойки ключ-стойност за съхраняване и обмен на данни. Това е най -широко използваният формат за обмен на данни, често срещан в RESTful API, леки бази данни, конфигурационни файлове и друг офлайн или онлайн софтуер, който трябва да съхранява, извлича и обменя данни. Повечето езици за програмиране включват библиотеки за синтактичен анализ и запис на JSON данни по подразбиране, а JSON е агностичен формат за данни на езика за програмиране. Стойностите, съхранявани в JSON файл или полезен товар, обикновено съдържат низове, числа и сериализуеми типове данни като списъци (масиви).
Речници на JSON и Python
JSON данните в python се преобразуват в речников обект с помощта на метод на зареждане. Често се вижда, че някои хора приравняват json данните и речника на python, тъй като синтаксисът за дефиниране на двамата е почти еднакъв. Въпреки това, json данните не са нищо друго освен текстов низ, структуриран в твърд синтаксис, докато речникът на python е обект от структура от данни, съхраняван в паметта. Ако искате да съхранявате речникови данни в текстов файл или да ги изпращате в друга програма, която не е python, първо ще трябва да ги преобразувате в текстов низ (байтове). Този изхвърлен / преобразуван текстов низ е дефиниран в стандартния синтаксис на JSON и процесът на преобразуване на речник на python в json съвместим низ се нарича сериализация.
Четене и изхвърляне на JSON данни в Python
JSON данните могат да бъдат извлечени като отговор от сървър, да бъдат прочетени от файл, нарязани от параметрите на заявката за URL и т.н. Тази статия ще се фокусира главно върху четенето на json данни от локално съхранен файл. Да приемем, че файлът test.json съдържа следните данни:
{'codename': 'Eoan Ermine', 'version': 'Ubuntu 19.10'}
За да прочетете файла test.json в python, можете да използвате кода по -долу:
вносjson
с отворен ('test.json') катоf:
данни=json.натоварване(е)
сметище=json.сметища(данни)
печат (данни)
печат (Тип(данни))
печат (сметище)
печат (Тип(сметище))
Първият ред в горния код импортира json модул. В следващия ред с open се използва за безопасно четене на съдържанието на файла. В рамките на с отворен блок методът json.load се използва за четене и съхраняване на съдържанието на файла в променливата с данни. Данните, заредени в предишната стъпка, се преобразуват обратно в json низ чрез метода json.dump. Изпълнението на горния код ще покаже следния изход:
{'кодово име':„Eoan Ermine“, 'версия':„Ubuntu 19.10“}<клас 'dict'>
{'кодово име':„Eoan Ermine“, 'версия':„Ubuntu 19.10“}
<клас 'str'>
Забележете в горния изход, че методът json.load чете необработени json данни в речник на python, докато методите json.dumps преобразуват речник в низ, който е съвместим със структурата на JSON. След като JSON обект е преобразуван в обект на речник на python, можете да използвате вградени речникови методи на python за обработка на данните. Горният пример е доста основен и не включва масиви в JSON данни или вложени стойности. Въпреки това в рамките на python можете да обработвате тези стойности като всички други вложени речници и списъци.
Сортиране и красив печат на JSON данни
Методът json.dump поддържа някои незадължителни параметри за сортиране на ключове и красив печат на изхода за подобрена четливост.
вносjsonс отворен ('test.json') катоf:
данни=json.натоварване(е)
сметище=json.сметища(данни,сортиране_ключове=Вярно,отстъп=4)
печат (сметище)
Кодът по -горе ще покаже следния изход:
{'codename': 'Eoan Ermine',
'версия': 'Ubuntu 19.10'
}
Преобразувания на тип данни
Списъкът по -долу илюстрира как стойностите на JSON се преобразуват в обекти на python и обратно.
JSON | Python |
низ | стр |
номер | int или float |
вярно невярно | Вярно невярно |
нула | Нито един |
масив | списък |
обект | dict |
Модул на командния ред Json.tool
Python включва приятна помощна програма за командния ред json.tool, която може да се използва за валидиране и красиво отпечатване на JSON низове и файлове.
$ echo'{' codename ':' Eoan Ermine ',' version ':' Ubuntu 19.10 '}'| python3 -m json.инструментИзпълнението на горната команда ще ви покаже следния изход:
{'codename': 'Eoan Ermine',
'версия': 'Ubuntu 19.10'
}
Можете също да използвате json.tool с JSON файлове. Заменете in_file и out_file в командата по -долу с желаните от вас стойности:
$ python3 -m json.инструментin_file out_fileОсвен красиво отпечатване, сортиране и валидиране на JSON данни, json.tool не прави нищо друго. Така че, ако искате да манипулирате някакви JSON данни, трябва да напишете свой собствен персонализиран код, като използвате вградения JSON модул.