BraveTiger

CH4. 데이터 수집2 - JSON, XML 본문

취업 준비/AIVLE SCHOOL

CH4. 데이터 수집2 - JSON, XML

BraveTiger 2023. 2. 25. 15:36

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 데이터 타입

  1. 숫자
    • 정수, 실수, 지수
  2. 문자열
  3. 불리언
  4. 객체
  5. 배열 "family" : ["웰시코기", "포메라니안", "푸들"]
  6. 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)

Comments