Un programme de traitement de JSON
Soit le fichier HTML et le fichier JavaScript ci-après.
1
<html>
2
<head>
3
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
4
<title>Démo JSON/JavaScript</title>
5
<script type="text/javascript" src="query.js"></script>
6
</head>
7
<body>
8
<input type="file" id="myfile" onchange="query()"/>
9
<div id="mydiv"/>
10
</body>
11
</html>
1
function query() {
2
// File 3
let vFile = document.getElementById("myfile").files[0];
4
// Reader5
let vReader = new FileReader();
6
vReader.readAsText(vFile);
7
vReader.onload = function(pEvent) {
8
// String Input9
let vContent = pEvent.target.result;
10
// JSON to object11
let vJson = JSON.parse(vContent);
12
// Query13
let vResult = vJson.prenom + " " + vJson.nom + " (" + vJson.age + ")";
14
// Output15
document.getElementById("mydiv").appendChild(document.createTextNode(vResult));
16
};
17
}
Question
Écrire un fichier JSON permettant de représenter une personne avec les attributs suivants :
un nom
un prénom
un age
une liste d'adresses mail
Solution
1
{2
"nom":"Crozat",
3
"prenom":"Stéphane",
4
"age":40,
5
"adresse": ["stephane.crozat@utc.fr", "stph@crzt.fr"]
6
}
Question
Expliquer ce que fait le programme. Tester le programme avec le fichier JSON proposé.
Question
Compléter la fonction query() afin d'afficher la liste des adresses mail (en plus des information actuelles).
Indice
On parcours le tableau JSON à l'aide d'une boucle.
1
for (let i=0;i<vJson.adresse.length;i++) {
2
3
}
Solution
1
function query() {
2
// File 3
let vFile = document.getElementById("myfile").files[0];
4
// Reader5
let vReader = new FileReader();
6
vReader.readAsText(vFile);
7
vReader.onload = function(pEvent) {
8
// String Input9
let vContent = pEvent.target.result;
10
// JSON to object11
let vJson = JSON.parse(vContent);
12
// Query13
let vResult = vJson.prenom + " " + vJson.nom + " (" + vJson.age + ")";
14
// Adding adresses15
for (let i=0;i<vJson.adresse.length;i++) {
16
vResult = vResult + " " + vJson.adresse[i];
17
}
18
// Output19
document.getElementById("mydiv").appendChild(document.createTextNode(vResult));
20
};
21
}