JSON-tiedostot

Pythonissa voi hyödyntää JSON-muotoisia tiedostoja, joiden avulla on hyvin helppoa tallentaa dataa tiedostoihin ja lukea sitä (JSON = JavaScript Object Notation). JSON on ohjelmointikielestä riippumaton, avoin ja standardoitu tiedostoformaatti, jota voi käyttää useiden eri ohjelmointikielien kanssa. JSON-tiedostot ovat tekstimuotoisia ja ihmisten luettavissa (ja muokattavissa).

JSON-tiedostojen luominen

Luodaan JSON-tiedosto, jonne tallennamme listoja sisältävän sanakirjan:

# JSON-tiedostoja käytettäessä tarvitaan json-moduuli
import json

# Määritellään listoja sisältävä sanakirja
alkuaineet = {'O': ['Happi', 15.999], 'C': ['Hiili', 12.011], 'N': ['Typpi', 14.007]}

# Luodaan tiedosto
tiedosto = open("alkuaineet.json", "w")
# Kirjoittaminen json.tiedostoon hoidetaan json.dump()-funktiolla:
# json.dump(TALLENNETTAVA_DATA, TIEDOSTO-OLIO, indent = 4)
# indent = 4 -parametrilla tiedot tallentuvat selkeässä muodossa
json.dump(alkuaineet, tiedosto, indent = 4)
tiedosto.close()

Lopputuloksena saatava tiedosto moolimassat.json näyttää tältä:

{
    "O": [
        "Happi",
        15.999
    ],
    "C": [
        "Hiili",
        12.011
    ],
    "N": [
        "Typpi",
        14.007
    ]
}

JSON-tiedostomuodon käyttäminen on suositeltavaa, kun haluat tallentaa monimutkaisempia tietorakenteita. Muuttujatyypit intfloatstrboolean sekä tietorakenteet list ja dict voi tallentaa sellaisinaan JSON-tiedostomuodossa.

JSON-tiedostojen lukeminen

Tietojen lukeminen yllä luodusta alkuaineet.json-tiedostosta on näin helppoa:

import json
tiedosto = open("alkuaineet.json", "r")
# Tiedot ladataan json.load(TIEDOSTO-OLIO) -funktiolla 
alkuaineet2 = json.load(tiedosto) 
# alkuaineet2 on nyt sanakirja
tiedosto.close()

# Hyödynnetään vielä luettuja tietoja
for alkuaine, tiedot in alkuaineet.items():
    # alkuaine on merkkijono (esim. "O"), tiedot on kahden alkion lista [nimi, atomiopaino]
    print("Alkuaineen {:s} tiedot: Nimi = {:s}, atomipaino = {:6.3f}".format(alkuaine, tiedot[0], tiedot[1]))

Koodi tulostaa:

Alkuaineen O tiedot: Nimi = Happi, atomipaino = 15.999
Alkuaineen C tiedot: Nimi = Hiili, atomipaino = 12.011
Alkuaineen N tiedot: Nimi = Typpi, atomipaino = 14.007