# Programmation Python/JSON
## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp

## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp
[ Modifier le sommaire ]
La notation objet du langage Javascript JSON (JavaScript Object Notation en anglais) permet de déclarer des données structurées (objets, tableaux, entiers, chaînes de caractères, ...). Les types supportés ont une correspondance avec les types de données Python. Ce format est souvent utilisé dans l'échange de données, ou dans les fichiers de configuration.

## Le module json
### Chaînes de caractères

Le module json possède différentes méthodes permettant la conversion d'une chaîne de caractères au format JSON en données Python et vice-versa.
* La fonction dumps(data) convertit des données Python en chaîne de caractères au format JSON (Dump to String).
* La fonction loads(json_string) convertit une chaîne de caractères au format JSON en données Python (Load from String).
Exemple :

### Syntaxe JSON et types Python

La syntaxe JSON semble similaire à celle des types en Python, mais il y a toutefois des différences listées dans le tableau ci-dessous.
| Type JSON | Type JSON | Type Python | Type Python |
| Chaîne de caractères (toujours des guillemets ") | "chaîne d'exemple" | str Chaîne de caractères (guillemets ", apostrophe ', ...) | 'chaîne d\'exemple' |
| entier | 2024 | int | 2024 |
| nombre à virgule flottante | 3.14159 | real | 3.14159 |
| booléen | true | bool | True |
| tableau | [20, 40, 50] | list | [20, 40, 50] |
| object | {"titre": "exemple", "numero": 22} | dict | {"titre": "exemple", "numero": 22} |
| référence nulle | null | NoneType | None |

### Flux d'entrée-sortie

Le module json permet aussi le décodage d'un flux d'entrée et l'encodage vers un flux de sortie.
* La fonction dump(data, io) écrit les données Python au format JSON vers le flux spécifié.
* La fonction load(io) retourne les données au format JSON lues à partir du flux spécifié.
Exemple avec un flux écrivant/lisant une chaîne de caractères :