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