본문 바로가기
Python/데이터 다루기

Python에서 JSON을 사용하는 방법(for 초급자)

by 찐남 2022. 5. 13.

JSON은 데이터를 저장하고 

전송하는 뛰어난 방법입니다. 

 

JSON에 대한 기본 개념은

아래 포스팅을 참고하세요.

 

 

 

JSON에 대한 소개

JSON은 JavaScript Object Notation의 약어입니다. 데이터 교환 형식으로 데이터를 저장하고 전송하는 방식이라는 멋진 표현입니다. 사용 사례에 매우 많아, 이루 말할 수 없을 정도입니다. JSON은 Ja

zzinnam.tistory.com

 

이번 포스팅에서는 Python내에서

JSON의 힘을 활용할 수 있는 방법을

알아보고자 합니다.

 

Python은 JSON이라는 패키지를 통해 

JSON에 대한 지원을 하고 있으며

JSON을 딕셔너리(dictionary)와

유사하게 취급합니다.

 

Python 내에서 JSON은 기본 자료형

(예: 문자열 및 숫자)과 중첩 목록,

튜플 및 객체를 지원합니다.

 

Python처럼 접근하기 쉬운 언어에서

JSON을 사용하는 이유는 무엇일까요?

 

이유는 단순하고 간단합니다!

JSON은 "key" : "value" 쌍으로

이해하기 쉬울 뿐만 아니라

API 및 구성 파일에서

데이터를 저장하고 가져오기 위한

공통 데이터 형식으로도 자주 사용됩니다.

 

많은 다른 시스템,

애플리케이션 및 서비스가 이미

JSON을 사용하여

데이터를 저장하고 전송하고 있는데 

Python에서 사용하고 싶지 않을까요?

 

Python 코드 내에서 JSON으로 

작업하는 방법을 알아보겠습니다.

 

Python과 JSON을 사용하여 

Hello, World!

를 출력하는 쉬운 애플리케이션을

생성해 보겠습니다.

 

 

 

가장 먼저 할 일은 

Python 스크립트를 만드는 것입니다. 

 

새로운 파일(파일명: hello-world.py)

하나 만듭니다.

 

Python 코드에서 JSON을 사용하려면 

먼저 아래 명령문처럼

JSON 라이브러리를 가져와야 합니다.

 

import json

 

다음 줄에는 실제 JSON 

항목이 포함되어 있으며 다음과 같습니다.

 

import json
sampleJson = '{"name1":"Hello,", "name2":"World!"}'

 

JSON을 사용하기 때문에 json 라이브러리에서 

loads라고 하는 함수를 이용해야 합니다.

 

loads 함수는

sampleJson에서 JSON 데이터를 로드하고

변수 데이터에 할당하는 역할을 합니다.

 

import json
sampleJson = '{"name1":"Hello,", "name2":"World!"}'
data = json.loads(sampleJson)

 

마지막으로 

데이터에 저장한 정보를 출력합니다.

 

import json
sampleJson = '{"name1":"Hello,", "name2":"World!"}'
data = json.loads(sampleJson)
print(f'{data["name1"]}, {data["name2"]}')

<하단에 Hello, World! 출력>

 

 

 

조금만 더 복잡하게 해 보겠습니다.

 

JSON을 딕셔너리로 사용하는

간단한 Python 스크립트를 만든 다음

형식이 지정되지 않은 결과와

형식이 지정된 결과 모두로

데이터를 출력하는 방법을 살펴보겠습니다.

 

import json

myDictionary = {
    "name": "Jack Wallen",
    "job_titel": "Writer",
    "company_name": "The New Stack",
    "speciality": "Linux",
    "emails": [{"email": "???@example.com", "type": "work"}],
    "my_neighbor": False
}

 

다음으로 myDictionary 객체에서

JSON의 dumps 함수를 사용합니다.

 

unformattedJson = json.dumps(myDictionary)

 

마지막으로

형식이 지정되지 않은 방식으로

JSON 데이터를 출력합니다.

 

print(unformattedJson)

 

출력 결과는 아래와 같습니다.

 

 

형식이 지정되지 않은

텍스트를 출력하는 대신

실제로 더 표준적인 JSON 형식으로

출력할 수 있습니다.

 

그렇게 하려면 먼저

myDictionary 구문 아래에

다음과 같은 섹션을 추가해야 합니다.

 

formattedJson = json.dumps(
    myDictionary,
    indent = 4,
    separators = (", ", " = "),
    sort_keys = True
)

 

위 구문은

 

JSON의 덤프 기능을 사용한 다음

들여 쓰기 및 큰따옴표 구분 기호로

myDictionary의 형식을 지정하고,

 

formattedJson 변수에

데이터를 할당하는 동안

key를 기준으로

출력 딕셔너리를

정렬하는 것입니다

(sort_keys = True 사용).

 

import json

myDictionary = {
    "name": "Jack Wallen",
    "job_titel": "Writer",
    "company_name": "The New Stack",
    "speciality": "Linux",
    "emails": [{"email": "???@example.com", "type": "work"}],
    "my_neighbor": False
}

formattedJson = json.dumps(
    myDictionary,
    indent = 4,
    separators = (", ", " = "),
    sort_keys = True
)

print(formattedJson )

 

 

 

JSON 형식의 파일 읽기

 

예를 들어, 긴 JSON 형식의 

직원 데이터 파일이 있다고 

가정해 보겠습니다. 

 

아래 형태의 데이터가

'data.json'이라는 파일명으로,

C드라이브에 저장되어 있다는 

가정하에 

 

{
     "employee_details": [
         {
             "employee_name" : "Jack Wallen",
             "employee_email" : "???@example.com",
             "employee_title" : "writer"
         },
         {
             "employee_name" : "Olivia Nightingale",
             "employee_email" : "night???@example.com",
             "employee_title" : "editor"
         }
     ]
}

 

해당 데이터를 Python으로

읽어 보겠습니다.

 

import json

f = open("c:\data.json")
data = json.load(f)

for i in data["employee_details"]:
    print(i)

f.close()

<두 개의 데이터가 딕셔너리 형태로 출력>

 

 

반응형

댓글