[python][자료구조] Python의 JSON - 문자열을 JSON으로 변환하는 방법

이번 튜토리얼에서 여러분은 JSON에 대한 기본적인 내용을 배우게 될 것입니다 - JSON이 무엇인지, 주로 어디에서 사용되는지, 문법은 어떠한지

또한 Python에서 문자열을 JSON으로 변환하는 방법에 대해 살펴보겠습니다.

그럼 시작해봅시다!

JSON이란 무엇일까요?

JSON은 JavaScript 객체 표기법(JavaScript Object Notation)을 뜻합니다.

웹 애플리케이션 상에서 정보를 저장하고 전달하는 데 쓰이는 데이터 포맷입니다.

JSON은 JavaScript 프로그래밍 언어에서 나왔지만, 단지 JavaScript에만 종속되지 않습니다.

대부분의 현대 프로그래밍 언어들은 JSON 데이터를 분석하고 만들어내는 라이브러리를 가지고 있습니다.

JSON은 어디에서 사용될까요?

JSON은 주로 서버와 (웹페이지 또는 웹 애플리케이션 상의) 클라이언트 사이에서 데이터를 주고 받는 데 사용됩니다.

JSON은 웹 애플리케이션이 네트워크와 연결할 때 요청-응답의 순환 과정에서 사용하는 훨씬 더 강점이 많은 포맷입니다. 수년 전까지 많이 쓰였던 포맷이자 복잡하고 덜 압축된 XML과 비교하자면 그 차이점이 확연합니다.

기본 JSON 문법

JSON에서 데이터는 다음과 같이 키(key)-값(value)의 쌍으로 쓰입니다.

"first_name": "Katie"

데이터는 큰따옴표로 둘러싸이며, 키(key)와 값(value)은 콜론으로 구분됩니다.

키-값은 한 쌍 이상이 될 수 있는데, 각각의 쌍은 콤마로 구분할 수 있습니다.

"first_name": "Katie", "last_name": "Rodgers"

위의 예시는 여러 쌍의 키-값의 모음인 객체를 보여줍니다.

객체는 중괄호 안에 있습니다.

{
    "first_name": "Katie",  
    "last_name": "Rodgers"
}

또한 JSON을 통해 순서를 가진 값들이 모인 배열을 만들 수도 있습니다. 이 경우 배열은 대괄호 안에 포함됩니다.

[
  {     
    "first_name": "Katie",  
    "last_name": "Rodgers"
  },
  
  {   
    "first_name": "Naomi",  
    "last_name": "Green"
  },
]

// 또는:


{
 "employee": [
  { 
    "first_name": "Katie",  
    "last_name": "Rodgers"
  },
  
  { 
    "first_name": "Naomi",  
    "last_name": "Green"
  },
 ]
}

// 2개의 집합을 원소로 가진 'employee' 객체를 만들었습니다.
// employee의 first name과 last name을 정의합니다.

Python에서 JSON 데이터로 작업하는 방법

Python을 위한 JSON 모듈 포함시키기

Python에서 JSON을 사용하려면 여러분이 작성 중인 Python 파일 최상단에 JSON 모듈을 포함시킬 필요가 있습니다. 이 모듈은 Python에 내장되어 있으며 표준 라이브러리의 한 부분입니다.

demo.py라는 파일이 있다고 해봅시다. 파일 최상단에 다음 한 줄을 추가하세요.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

import json

json.loads() 함수 사용하기

여러분의 프로그램에 다음과 같은 JSON 문자열 데이터가 있다고 가정해봅시다.

#json 라이브러리 포함시키기
import json

#json 문자열 데이터
employee_string = '{"first_name": "Michael", "last_name": "Rodgers", "department": "Marketing"}'

#type() 함수로 자료형 확인하기
print(type(employee_string))

#출력
#<class 'str'>

json.loads() 함수를 사용하면 문자열을 JSON으로 바꿀 수 있습니다.

json.loads() 함수는 JSON 형태의 문자열을 입력으로 받아들이고 Python의 딕셔너리 자료형으로 변환합니다.

이렇게 문자열을 객체로 변환하는 과정을 역직렬화(deserialization) 라고 합니다.

#json 라이브러리 포함시키기
import json

#json 문자열 데이터
employee_string = '{"first_name": "Michael", "last_name": "Rodgers", "department": "Marketing"}'

#type() 함수로 자료형 확인하기
print(type(employee_string))

#문자열을 객체로 변환하기
json_object = json.loads(employee_string)

#새로운 자료형 확인하기
print(type(json_object))

#출력
#<class 'dict'>

Python의 딕셔너리를 사용할 때 그러하듯이 각각의 개별적인 항목에도 접근할 수 있습니다.

#json 라이브러리 포함시키기
import json

#json 문자열 데이터
employee_string = '{"first_name": "Michael", "last_name": "Rodgers", "department": "Marketing"}'

#type() 함수로 자료형 확인하기
print(type(employee_string))

#문자열을 객체로 변환하기
json_object = json.loads(employee_string)

#새로운 자료형 확인하기
print(type(json_object))

#출력
#<class 'dict'>

#딕셔너리 안의 first_name에 접근하기
print(json_object["first_name"])

#output
#Michael

또 다른 예제를 살펴봅시다.

1. JSON 문자열 데이터를 가져옵니다.

import json

#json 문자열
employees_string = '''
{
    "employees": [
       {
           "first_name": "Michael", 
           "last_name": "Rodgers", 
           "department": "Marketing"
        },
       {
           "first_name": "Michelle", 
           "last_name": "Williams", 
           "department": "Engineering"
        }
    ]
}
'''

#type() 함수로 자료형 확인하기
print(type(employees_string))

#출력
#<class 'str'>

2. 문자열을 객체로 변환하기 위해 json.loads() 함수를 사용합니다.

import json

emoloyees_string = '''
{
    "employees" : [
       {
           "first_name": "Michael", 
           "last_name": "Rodgers", 
           "department": "Marketing"
        },
       {
           "first_name": "Michelle", 
           "last_name": "Williams", 
           "department": "Engineering"
        }
    ]
}
'''

data = json.loads(employees_string)

print(type(data))
#출력
#<class 'dict'>
  1. 데이터에 접근해봅시다.
import json

employees_string = '''
{
    "employees" : [
       {
           "first_name": "Michael", 
           "last_name": "Rodgers", 
           "department": "Marketing"
           
        },
       {
           "first_name": "Michelle", 
           "last_name": "Williams", 
           "department": "Engineering"
        }
    ]
}
'''

data = json.loads(employees_string)

print(type(data))
#출력
#<class 'dict'>

#first_name에 접근하기
for employee in data["employees"]: 
    print(employee["first_name"])
    
#출력
#Michael
#Michelle

결론

여기까지 해냈습니다. 이제 여러분은 Python에서 JSON을 사용하는 기본적인 방법을 알게 되었습니다!

Python에 대해 더 배워보고 싶으신가요? freeCodeCamp에서는 Python Certification를 통해 기본적인 내용(변수, 반복문, 자료구조와 같이 보다 더 발전된 주제에 대한 기능 등)을 제공합니다. 궁극적으로 여러분은 5개의 프로젝트를 만들게 됩니다.

읽어주셔서 감사합니다. 행복한 코딩하세요!

 

[출처] https://www.freecodecamp.org/korean/news/pythonyi-json-munjayeoleul-jsoneuro-byeonhwanhaneun-bangbeob/

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
15 [python 데이터분석] [jupyter] 주피터 노트북에 이미지 삽입 file 졸리운_곰 2025.09.06 524
14 [python 데이터분석] [Python] Streamlit 사용법 (python 데이터분석 웹 만들기) file 졸리운_곰 2024.12.22 462
13 [python 데이터분석] Anaconda : Error while loading conda entry point: conda-libmamba-solver (libarchive.so.19: cannot open shared object file: No such file or directory) 졸리운_곰 2024.12.14 520
12 [python 데이터분석] Anaconda | Conda update 반영 안됨(update 후에도 버전 변경 없음) file 졸리운_곰 2024.11.18 431
11 [python 데이터분석] Keeping Anaconda Up To Date 졸리운_곰 2024.05.30 552
10 [python 데이터 분석] 국내 경제 100대 통계지표 졸리운_곰 2024.02.18 672
9 [python 데이터 분석] Python 에서 R언어 패키지 호출 : Calling R From Python With rpy2 file 졸리운_곰 2024.01.28 676
8 [python 데이터 분석] 파이썬을 활용한 코스피, 달러 환율정보 수집부터 차트 시각화까지 file 졸리운_곰 2023.12.11 735
7 [Python 데이터분석][pandas] [Python pandas] DataFrame의 문자열 칼럼을 숫자형으로 바꾸기 : pd.to_numeric(), DataFrame.astype() file 졸리운_곰 2023.12.09 357
6 [Python 데이터분석] [Python 환경설정] VS code 설치 및 Anaconda와 연동하기 file 졸리운_곰 2023.03.17 527
5 [Python 데이터분석][python 데이터분석 프로덕션] [Python] Docker를 사용한 Dash 웹앱 생성 file 졸리운_곰 2021.12.10 403
4 [Python 데이터분석] [pandas] 공공데이터(csv) 활용시 한글 깨짐 현상 해결 file 졸리운_곰 2021.09.30 592
3 [Python 데이터분석] 공공데이터포털::공휴일 데이터 조회 (REST API) file 졸리운_곰 2021.09.30 358
2 [Python 데이터 분석] pandas의 to_csv()를 사용해서 csv 파일로 저장하기(save 하기) 졸리운_곰 2021.09.29 603
1 [Python 데이터 분석] 데이터 과학을 단순하게 만드는 3가지 Python 패키지 file 졸리운_곰 2021.09.24 513
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED