BraveTiger
CH4. 데이터 수집2 - JSON, XML 본문
JSON(JavaScript Object Notation)
Javascript 객체 문법을 따르는 문자 기반의 데이터 포맷 웹 애플리케이션에서 데이터를 전송할 때 일반적으로 사용
-> 데이터를 쉽게 교환하고 저장하기 위해 만들어진 텍스트 기반 데이터 교환 표준
- JSON은 xml의 대안으로 더 쉽게 데이터를 교환, 저장하기 위함이다.
- JSON은 문자열 형태로 존재
- 네트워크를 통해 전송할 때 아주 유용
- 데이터에 엑세스하기 위해서는 네이티브 JSON 객체로 변환될 필요가 있다.
- JSON은 프로그래밍 언어와 운영체제에 독립적이다.
XML(EXtensible Marrup Language)
HTML과 비슷한 문자 기반의 마크업 언어
-> 기계와 사람이 동시에 읽기 편한 구조로 되어 있다.
- 데이터를 보여주는 목적이 아닌 저장하고 전달하려는 목적
JSON과 XML의 공통점
- 데이터를 저장, 전달하기 위해 고안
- 기계뿐만 아니라 사람도 쉽게 읽을 수 있음.
- 계층적인 데이터 구조를 가짐
- 프로그래밍 언어에 의해 파싱 될 수 있음
※ parsing
문자열에서 네이티브 객체로 변환하는 것(str -> object)
네트워크를 통해 전달할 수 있게 객체를 문자열로 변환하는 과정은 문자열화(Stringification)
- XMLHttpRequest 객체를 이용하여 서버로부터 데이터를 전송받을 수 있음
# XML 예제
<dog>
<name>식빵</name> # 종료태그 사용
<family>웰시코기<family>
<age>1</age>
<weight>2.14</weight>
</dog>
# json 예제
{
"name": "식빵", # 배열 사용
"family": "웰시코기",
"age": 1,
"weight": 2.14
}
JSON 문법
자바스크립트의 리터럴(literal)과 프로퍼티(property)를 표현하는 방법만 가져와서 사용 (매우 단순)
# literal과 property
12 // 숫자 리터럴
"JSON" // 문자열 리터럴
true // 불리언 리터럴
# key: value 형태의 네 쌍의 property로 이뤄진 "dog"라는 객체
{
"name": "식빵",
"family": "웰시코기",
"age": 1,
"weight": 2.14
}
JSON 구조
# 코드로 형식 지정됨
"dog": [
{"name": "식빵", "family": "웰시코기", "age": 1, "weight": 2.14},
{"name": "콩콩", "family": "포메라니안", "age": 3, "weight": 2.5},
{"name": "젤리", "family": "푸들", "age": 7, "weight": 3.1}
]
JSON 데이터 타입
- 숫자
- 정수, 실수, 지수
- 문자열
- 불리언
- 객체
- 배열 "family" : ["웰시코기", "포메라니안", "푸들"]
- null
json 데이터 포맷 수집 절차
- Json -> DICT -> DF
JSON의 구조
JSON은 Javascript 객체 리터럴 문법을 따르는 문자열입니다. JSON 안에는 마찬가지로 Javascript의 기본 데이터 타입인 문자열, 숫자, 배열, 불리언 그리고 다른 객체를 포함할 수 있다.
XML(EXtensible Marrup Language)
HTML과 비슷한 문자 기반의 마크업 언어
- 기계와 사람이 동시에 읽기 편한 구조로 되어 있다.
- 데이터를 보여주는 목적이 아닌 저장하고 전달하려는 목적
- HTML처럼 태그가 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있다.
XML의 특징
- 다른 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어
- 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 해줌
- 새로운 태그를 만들어 추가해도 계속해서 동작하므로 확장성이 좋음
- 데이터를 보여주지 않고 데이터를 전달, 저장하는 목적
- 텍스트 데이터 형식의 언어로 모든 XML 문서는 유니코드 문자로만 이뤄짐
※ 유니코드(Unicode)
전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준
세계 모든 언어와 기호에 코드값을 부여한 것으로 저장 효율을 위해 언어에 따라 하나의 문자를 표현하는데 1~4 bytes를 사용한다.(가변 길이 인코딩 방식)
- 유니코드 문자를 읽기 위해 인코딩이 필요한데 이 때 encoding은 자주 사용하는 'utf-8', 'utf-16', 'euc-kr'등이 있다.
XML 목적
서로 다른 데이터 타입을 사용하는 시스템 간의 데이터 교환에 많은 문제점이 있다.
- 데이터 교환에 많은 시간과 노력이 필요
- 데이터 변환 과정에서 데이터 손실이 발생
따라서 XML은 데이터를 텍스트 형식으로 저장하므로 SW/HW에 독립적으로 데이터를 저장하고 전달한다.
XML 구조
<?xml version="1.0" encoding="UTF-8"?> # <xml>태그를 사용하여 XML 문서임을 명시
<shop city="서울" type="마트"> <!-- root요소(모든 요소의 조상) -->
<food> <!--자식1(child)-->
<name>귤</name> (child of child1)
<sort>과일</sort> (child of child1)
<cost>3000</cost> (child of child1)
</food>
<food> <!--자식2(child)-->
<name>상추</name> (child of child2)
<sort>야채</sort> (child of child2)
<cost>2000</cost> (child of child2)
</food>
</shop>
XML 요소와 속성
어떤 방법으로 정보를 저장해도 두 가지 모두 같은 정보를 제공한다.
<student>
<name>홍길동</name> <!-- 홍길동은 요소 -->
<year>3</year>
<major>컴퓨터공학</major>
</student>
<student name="홍길동"> <!-- 홍길동은 속성이다 -->
<year>3</year>
<major>컴퓨터공학</major>
</student>
출처
코딩의 시작, TCP School, "JSON", https://www.tcpschool.com/json/json_basic_syntax, (2023-02-24)
코딩의 시작, TCP School, "XML", https://www.tcpschool.com/xml/intro, (2023-02-24)
'취업 준비 > AIVLE SCHOOL' 카테고리의 다른 글
CH4. 데이터 수집4 - Web Crawing (0) | 2023.02.27 |
---|---|
CH4. 데이터 수집3 - OPEN API를 통한 데이터 수집(서울 열린데이터광장) (0) | 2023.02.25 |
CH4. 데이터 수집1 - API (0) | 2023.02.25 |
AIVLE School (0) | 2022.12.26 |
AICE Basic 후기와 팁 (0) | 2022.11.16 |