[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/

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
492 [Python 수학] Python/데이터 사이언스 [파이썬] Numpy 정리 졸리운_곰 2023.11.28 13
491 [python, C++] Interfacing C++ and Python with the Python API : C++ 및 Python과 Python API의 인터페이스 file 졸리운_곰 2023.08.18 29
490 [python 일반] 파이참 에러 : Fatal Python error: init_stdio_encoding: failed to get the Python codec name of the stdio encoding file 졸리운_곰 2023.07.06 15
489 (Python) Jupyter Notebook 내에서만 환경 변수 설정 방법 졸리운_곰 2023.07.06 14
488 [python] 인공지능 python : 한글 문서 자동 요약 - lexrank 졸리운_곰 2023.07.06 15
487 [Python] 문자열에서 파일명 또는 폴더명으로 시스템상 지원되는 글자를 제외하고 삭제하기 졸리운_곰 2023.06.04 24
486 [python 일반] 파이썬 win32com 사용시 에러 해결 file 졸리운_곰 2023.06.04 119
485 [python 일반] win32com.gen_py 라이브러리의 오류 해결 졸리운_곰 2023.06.03 26
484 [Python 일반] 파일(폴더) 이름에 사용할 수 없는 특수 문자 제거 졸리운_곰 2023.06.03 24
483 [Python 일반] 파이썬에서 재귀적으로 깊은 계층적 디렉토리를 생성하기 위한 makedirs 졸리운_곰 2023.06.03 24
482 [python] 인공지능 katiehouse / django-scikit-learn-tutorial file 졸리운_곰 2023.06.03 34
481 [python][자료구조] Python - MySQL 데이터 추가, 삭제, 업데이트 졸리운_곰 2023.05.13 27
480 [Python 인터넷] 네이버 뉴스 기사 크롤링 졸리운_곰 2023.05.13 35
479 [Django][Django restframework] Django REST framework 시작하기 file 졸리운_곰 2023.05.07 7
478 [Django] REST API 로그인 서버 만들기 (2) - DB 연동, 테스트 file 졸리운_곰 2023.05.07 14
477 [Django] REST API 로그인 서버 만들기 (1) - 코드 졸리운_곰 2023.05.07 21
476 [Django] user의 ip address 가지고 오기 졸리운_곰 2023.05.07 13
475 [Django] [Python_Django] You are trying to add a non-nullable field '필드명' to post without a default 해결 졸리운_곰 2023.05.07 19
474 [Django] [Python_Django] 관리자 계정에서 테이블 관리하기 file 졸리운_곰 2023.05.06 8
» [python][자료구조] Python의 JSON - 문자열을 JSON으로 변환하는 방법 졸리운_곰 2023.05.06 25
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED