Курс за напреднала разработка на Python
Глава
>
Ниво

Модули за сериализация
Модул JSON

Цел

Отидете до сервизната станция и се уверете, че данните са правилно съхранени, като използвате модула JSON за форматиране на файлове.

На юг от пристройката в новата строителна зона има сервизна станция, цялата тази зона ще бъде преустройвана за отглеждане на култури. В станцията има различни терминали, обработващи данни за новото развитие, можем да въвеждаме данните ръчно, но това ще отнеме много време. За обработка на данни можем да използваме JSON, което е съкращение от JavaScript Object Notation, формат за обмен на данни, независим от програмиращите езици, който съхранява информация в лесно четим вид за съхранение и предаване на данни.

За да използваме JSON в Python, можем да използваме import json, което ни дава достъп до JSON функции; за нашите нужди ще използваме следните функции:

  • json.loads(): Преобразува JSON низ в Python данни; приема един аргумент — низа, който искате да анализирате в Python.
  • json.dumps(): Преобразува Python данни в JSON низов обект; тази функция може да приеме до четири (4) аргумента, като единствено първият е задължителен. Те са следните:
    1. Python данните, които искате да преобразувате в JSON: те могат да бъдат от следните типове данни: речници, списъци, кортежи, низове, цели числа, дробни числа, булеви стойности и None.
    2. indent: брой интервали, който желаете да добавите в началото на всеки елемент.
    3. separators: символите, които желаете да се появят между и/или в края на елементите.
    4. sort_keys: ако преобразувате речник, сортира ключовете по азбучен ред.

За начало отидете до златната X отметка в форпоста вляво и се обърнете към бюрото с бележката. Използвайте функцията read(), за да проверите информацията, необходима за потвърждаване на състоянието на терминала, и я запишете. После се отправете към светлата X отметка пред терминала; има константа на име transmission. Използвайте json.dumps(), за да я форматирате като JSON, така: transmission = json.dumps(transmission).

Създайте речник с име load и запишете стойността на json.loads() с константата transmission като аргумент. Това ще преобразува JSON в Python, така че информацията да бъде лесно достъпна. Използвайте функцията speak() с ключовете, посочени в бележката, и с речника load, който създадохте. Например: player.speak(load["system"]); повторете това за всички ключове.

След като проверите информацията на терминала, слезте към станцията, влезте вътре и отидете до светлата X отметка над зелената пътека. Проверете бележката с функцията read(), отбележете стойностите; в редактора има предварително написан речник с име profile. Попълнете липсващите стойности с информацията от бележката.

Отидете до тъмната X отметка над зелената пътека, застанете пред терминала, създайте променлива с име transfer и запишете стойността на json.dumps(), като подадете речника profile като единствен аргумент. По този начин преобразуваме речника в JSON низов обект. Използвайте предварително написаната функция display() и подайте JSON променливата transfer, за да запишете данните в терминала.

Отидете до тъмната X отметка над червената пътека и използвайте функцията read(), за да проверите вече въведените данни в терминала. Данните не са представени в правилен формат; за да бъдат правилно съхранени, трябва да се запишат и форматират като JSON. Данните са записани в константа речник с име red_data; създайте променлива red_storage и запишете стойността на функцията json.dumps().

За да форматирате данните, добавете следните аргументи към функцията: подайте red_data, за да конвертирате константата в JSON; добавете indent със стойност 5, за да форматирате текста; добавете separators със стойности ("- ", " = "), за да добавите тези символи в края на всеки ред. Редът трябва да изглежда така: red_storage = json.dumps(red_data, indent=5, separators=(\"- \", \" = \")). Използвайте предварително написаната функция display() и подайте JSON низа red_storage, за да съхраните и покажете форматираните данни.

Отидете до тъмната X отметка над синята пътека, застанете пред терминала и използвайте функцията read(). Подобно на преди, данните не са правилно съхранени и трябва да бъдат форматирани, но също и сортирани. Данните са записани в константа с име blue_data; създайте променлива blue_storage и запишете стойността на функцията json.dumps().

Като аргументи подайте blue_data, за да конвертирате константата в JSON; добавете indent със стойност 4, за да форматирате текста; добавете separators със стойности (".0", " = "), за да добавите тези символи в края на всеки ред. Освен това добавете аргумента sort_keys като последен аргумент със стойност True, като така: sort_keys=True. Използвайте предварително написаната функция display() и подайте JSON низа blue_storage, за да съхраните и покажете сортираните данни и да завършите нивото.

Книга с Код