JavaScript Object Notation (JSON) is een bestandsformaat dat veel gebruikt wordt in hedendaagse applicaties, vooral applicaties waarin via web services gecommuniceerd wordt. Het wordt door veel programmeertalen ondersteund (waaronder natuurlijk Javascript). JSON lijkt op pickling in de zin dat het objecten die in het geheugen van het computer bestaan opslaat in bestanden, waarbij de structuur bewaard blijft. Een verschil tussen pickling en JSON is dat JSON objecten opslaat op een manier die mensen kunnen lezen.

De json module werkt, net als de pickle module, met een dump() functie die data structuren naar een bestand schrijft, en een load() functie die data structuren inlaadt uit een bestand. Het bestand moet een tekstbestand zijn, en geen binair bestand.

from json import dump, load

kaaswinkel = [ ("Roquefort", 12, 15.23), 
    ("White Stilton", 25, 19.02), ("Cheddar", 5, 0.67) ]

fp = open( "pc_cheese.json", "w" )
dump( kaaswinkel, fp )
fp.close()

fp = open( "pc_cheese.json", "r" )
buffer = load( fp )
fp.close()

print( type( buffer ) )
print( buffer )

Alternatieven voor dump() en load() zijn de functies dumps() en loads(), die geen handle als argument krijgen. In plaats daarvan krijgt dumps() niks in de plaats van het handle argument, maar retourneert een string die de data structuur in JSON formaat bevat, terwijl loads() een string krijgt als argument in plaats van een handle, en de data structuur laadt uit die string.

Deze functies kunnen een groot aantal optionele argumenten krijgen die precies bepalen hoe de data wordt opgeslagen; bijvoorbeeld je kunt een indent= argument aan dump() en dumps() geven die bepaalt hoe ver wordt ingesprongen, en je kunt argumenten meegeven die de data in de dump sorteren. Raadpleeg de Python documentatie als je hier meer van wilt weten.

Een zwakte van de json module is dat alleen standaard Python data structuren ondersteund worden. Als je eigengemaakte classes wilt opslaan, moet je ze eerst converteren naar de standaard Python structuren. De json module biedt speciale JSONencoder en JSONdecoder classes die daarbij kunnen helpen. Het gaat te ver om die hier te bediscussiƫren.