JavaScript/JSON
간단한 json
성장코딩
2023. 2. 2. 12:05
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p id="demo"></p>
<script type="text/javascript">
let str = '{"name":"홍길동", "age":24, "address":"서울시"}' // string
// alert(str)
// string -> json 이를 parsing이라고 함
// let json = JSON.parse(str); // json으로 만들어줌(parsing)
// alert(json)
// document.getElementById("demo").innerHTML = json.address; // json(객체).address(key값)
let json = [
{
"name":"홍길동",
"age":24,
"height":172.2
},
{
"name":"성춘향",
"age":16,
"height":156.9
},
{
"name":"일지매",
"age":22,
"height":181.3
},
];
document.getElementById("demo").innerHTML = json[1].name + " " + json[1].height;
// 성춘향 156.9
</script>
</body>
</html>
|
cs |
NBAjson.json이라는 파일을 가져와서 원하는 값들에 접근해보도록 하자.
NBAjson.json 파일은 아래와 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
{
"quiz": {
"sport": {
"q1": {
"question": "Which one is correct team name in NBA?",
"options": [
"New York Bulls",
"Los Angeles Kings",
"Golden State Warriors",
"Huston Rocket"
],
"answer": "Huston Rocket"
}
},
"maths": {
"q1": {
"question": "5 + 7 = ?",
"options": [
"10",
"11",
"12",
"13"
],
"answer": "12"
},
"q2": {
"question": "12 - 8 = ?",
"options": [
"1",
"2",
"3",
"4"
],
"answer": "4"
}
}
}
}
|
cs |
위 파일을 활용하여,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<span id="sport1"></span><br>
<span id="sport2"></span>
<br><br>
<span id="q1a"></span><br>
<span id="q1b"></span>
<br><br>
<span id="q2a"></span><br>
<span id="q2b"></span>
<script type="text/javascript">
let xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if(xhttp.readyState == 4 && xhttp.status == 200){
nbaFunc(this.responseText); // responseText는 문자열로 데이터를 받는다.
}
}
xhttp.open("GET", "NBAjson.json", true);
xhttp.send();
function nbaFunc(resp){
// json으로 parsing
let json = JSON.parse(resp); // string -> json
// let str = JSON.stringify(json) // json -> string
// sport의 question에 접근
document.getElementById('sport1').innerHTML = "Question: " + json.quiz.sport.q1.question + " ";
document.getElementById('sport2').innerHTML = "Answer: " + json.quiz.sport.q1.options[3];
// 위 코드를 아래와 같이 사용할 수 있다. (quiz.sport 대신 quiz["sport"])
// document.getElementById('sport2').innerHTML = "Answer: " + json.quiz["sport"].q1.options[3];
// maths의 q1에 접근
document.getElementById('q1a').innerHTML = "Question: " + json.quiz.maths.q1.question;
document.getElementById('q1b').innerHTML = "Answer: " + json.quiz.maths.q1.options[2];
// maths의 q2에 접근
document.getElementById('q2a').innerHTML = "Question: " + json.quiz.maths.q2.question;
document.getElementById('q2b').innerHTML = "Answer: " + json.quiz.maths.q2.options[3];
}
</script>
</body>
</html>
|
cs |
결과는 다음과 같다.
<영화 5편에 대한 제목, 평점, 개봉일, 감독에 대한 정보를 나타낸 표 만들기>
먼저, json 파일을 살펴보면,
movie.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
[
{
"title":"아바타",
"score":8.83,
"openday":"2022.12.14",
"director": "제임스 카메론"
},
{
"title":"범죄도시2",
"score":9.00,
"openday":"2022.05.18",
"director": "이상용"
},
{
"title":"극한직업",
"score":9.20,
"openday":"2019.01.23",
"director": "이병헌"
},
{
"title":"어벤져스",
"score":9.50,
"openday":"2019.04.24",
"director": "안소니 루소"
},
{
"title":"명량",
"score":8.88,
"openday":"2014.07.30",
"director": "김한민"
}
]
|
cs |
테이블을 작성하는 코드는 아래와 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div id="movies">
</div>
<script type="text/javascript">
let xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if(this.readyState == 4 && this.status == 200){
movieFunc( this );
}
}
xhttp.open("GET", "movie.json", true);
xhttp.send();
function movieFunc( resp ) {
let jsonDoc = resp.responseText;
// alert(jsonDoc);
let json = JSON.parse(jsonDoc); // parsing
// alert(json);
let table = "<table border='1'>";
table += "<col width='50'><col width='100'><col width='80'><col width='100'><col width='140'>";
table += "<tr>";
table += "<th>번호</th>";
for(key in json[0]){
table += "<th>" + key + "</th>";
}
table += "</tr>";
// datas
for(i = 0;i < json.length; i++){
table += "<tr>";
table += "<th>" + (1 + i) + "</th>";
// 아바타에 대한 정보만 나옴
// table += "<td>" + json[0].title + "</td>";
// table += "<td>" + json[0].score + "</td>";
// table += "<td>" + json[0].openday + "</td>";
// table += "<td>" + json[0].director + "</td>";
for(key in json[i]){
table += "<td>" + json[i][key] + "</td>";
}
table += "</tr>";
}
table += "</table>";
document.getElementById("movies").innerHTML = table;
}
</script>
</body>
</html>
|
cs |
그 결과는