# On créer un nouveau tableau qui contiendra nos livres
bibliotheque = []
while True:
print(bibliotheque)
livre = input()
bibliotheque.append(livre)
```
Si on a le malheur d'arrêter l'application, alors on perd tout le contenu du tableau bibliothèque.
Et donc à chaque démarrage, on doit de nouveau rerentrer les livres.
Pas très pratique, mais il doit bien y avoir une solution !
## Ecrivons la liste des livres dans un fichier
La solution est donc d'écrire la liste des livres dans un fichier.
Oui, mais c'est pas si simple. Comment je vais faire ?
Je vais séparer mes livres par des virgules ? Si mon titre contient une virgule, que va t'il se passer ?
Un livre sur chaque ligne alors ? Et si on veut rajouter d'autres informations après ?
Mais ça veut dire que l'on va devoir écrire une fonction qui va convertir notre tableau en une chaine de caractère que l'on va enregistrer dans notre fichier,
ainsi qu'une autre fonction qui va lire une chaine de caractère d'un fichier et la transformer en fichier.
Dans notre cas, c'est plutot simple mais ça peut vite se complexifier :
>>> livre2['titre'] = "Les annales du disque monde"
>>> livre2['edition'] = "Hachette"
>>> bibliotheque.append(livre2)
>>> json.dumps(bibliotheque)
'[{"edition": "Galimard", "titre": "Harry Potter 1", "auteur": "J. K. Rowling"}, {"edition": "Hachette", "titre": "Les annales du disque monde", "auteur": "Terry Pratchett"}]'
```
Tout en bas, la chaine de caractère, c'est la représentation JSON du contenu de votre variable bibliotheque. Copiez-collez le et ouvrez une nouvelle fenêtre python pour taper :
Si on voulait réécrire les fonction sauvegarde() et charger() précédentes, on pourrait utiliser les fonctions déjà existantes de json pour écrire dans un fichier. **Notez la présence d'un S à la fin dans json.loads() et json.dumps() au dessus qui génèrent une chaine de caractère VS l'absence de ce S dans json.load() et json.dump() qui écrivent directement dans un fichier**
JSON ne sert pas qu'à sauvegarder des fichiers. Il permets aussi de faire communiquer des programmes écrits dans des langages différents via le réseau par exemple.