JavaScript

JavaScript JSON

code2772 2022. 11. 17. 08:50
728x90
반응형

✔ JSON

JSON(JavaScript Object Notation)
        - 데이터를 저장하거나 전송할 때 사용되는 경량의 DATA 교환 형식
        - 사람과 기계 모두 이해하기 쉬우며 용량이 작아서 XML을 대체하여 데이터 전송등에 많이 사용
        - 데이터 포멧일 뿐, 통신 방법도 프로그래밍 문법도 아님

✔ JSON 특징 1

JSON의 특징
- 서버와 클라이언트간의 교류에서 일반적으로 많이 사용
- 자바스크립트를 이용하여 JSON 형식의 문서를 자바스크립트 객체로 변환하기 쉬움
- 자바스크립트 문법과 굉장히 유사하지만 텍스트 형식일 뿐임
- 특정 언어에 종속되지 않으며 대부분 프로그래밍 언어에서 JSON 포멧의 데이터를 핸들링 할 수 있는 라이브러리를 제공

{
"name":"루시",
"age" : 13,
"family":"포메",
"weight":3.5
}

✔ JSON 특징 2

✔ JSON은 이름과 값으로 구성된 프로퍼티의 정렬되지 않은 집합, 자바스크립트 객체와 다른점은 메소드 프로퍼티가 없음

JSON의 구조
- 이름과 값의 쌍으로 이루어짐
- 데이터는 쉼표로 구분하여 나열
- {}중괄호로 둘러싸여 표현
- 배열은 []대괄호로 둘러싸여 표현

JSON의 타입
- 숫자(number)
- 문자열(String)
- 불리언(boolean)
- 객체(object)
- 배열(array)
- null

JSON 배열 표현 예제
{
"dog" :[
{"name":"루시","age" : 13,"family":"포메","weight":3.5},
{"name":"뽀시","age" : 12,"family":"폼피츠","weight":5.5},
{"name":"루뽀","age" : 15,"family":"허스키","weight":1.5}
]
}


https://jsonlint.com/ - json이 문법적으로 확인하는 사이트



JSON 함수

stringify(object) : JSON
객체를 문자열로 변환(직렬화, Serializing)
parse(JSON) : object
문자열 데이터를 자바스크립트 객체로 변환(역직렬화, Deserializing)

✔ JSON 예제

const dog = {
        name : 'Lucy',
        age : 13,
        eat :()=>{
        console.log('먹고있음!')
        }
        };

        const json = JSON.stringify(dog);
        console.log(json)
// 결과 -> {"name":"Lucy","age":13}
// 문자열로 변환하여 메소드는 출력X

        console.log(dog)

        const obj = JSON.parse(json);
        console.log(obj)
// 결과 -> { name: 'Lucy', age: 13 }

✔ JSON 과제

 

과제
인터넷에서 JSON API를 자유롭게 검색하고 해당 API를 호출하여 페이지에 출력하는 예제를 만들어보자.
- get 방식
- post 방식
data.go.kr 공공데이터포탈 - 공공데이터 확인

✔ JSON 과제 코드

     fetch 내 주소는 공공데이터 포털을 이용 -> 활용신청 ->  참고자료 문서 내 인증키 확인 -> 인증키 복사 활용

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>json</title>
<script>
     
                function fetchAPI(){ //비동기로 데이터를 
                        return  fetch('https://www.7timer.info/bin/astro.php?lon=113.2&lat=23.1&ac=0&unit=metric&output=json&tzshift=0')
                        .then((response)=> response.json())
                        .then((data)=> data);
                        }

                        fetchAPI().then((datas) => {
                        console.log(datas.dataseries);
                        showDatas(datas.dataseries)
                        })
                        function showDatas(datas){
                        const ulElement = document.querySelector('#dataseries')
                        ulElement.innerHTML = datas.map((data) => setLiElement(data) ).join('')
                        }
                        function setLiElement(data){
                        return `<li>cloudcover:${data.cloudcover} lifted_index :${data.lifted_index}prec_type :${data.prec_type}rh2m:${data.rh2m} seeing:${data.seeing} temp2m :${data.temp2m}timepoint :${data.timepoint}transparency:${data.transparency}</li>`;
        }

</script>
</head>
<body>
<h2>json</h2>
<ul id="dataseries">

</ul>


</body>
</html>

✔ JSON API 결과

반응형