Python에서 JSON을 구문 분석하는 방법
게시 됨: 2022-02-09JSON 은 데이터 교환에 널리 사용되는 형식입니다. Python 은 JSON 데이터를 구문 분석하고 작업하기 위한 내장 JSON 모듈과 함께 제공됩니다. 그리고 이 튜토리얼은 파이썬에서 JSON으로 작업하는 것에 대한 모든 것을 가르칠 것입니다.
이 튜토리얼을 마치면 다음을 배우게 될 것입니다.
- JSON의 기본,
- Python에서 JSON 문자열을 구문 분석하고 생성하는 방법 및
- Python에서 JSON 파일을 읽고 쓰는 방법.
시작하자!
JSON이란 무엇입니까?
JSON 은 Java S cript Object Notation 의 약자 로 데이터 교환 을 위한 텍스트 기반 형식입니다. JSON은 처음에는 JavaScript 객체에서 영감을 받았지만 거의 모든 프로그래밍 언어 는 JSON 작업을 지원합니다.
API로 작업하거나 구성 파일을 읽어본 적이 있다면 JSON을 만났을 것입니다.
API를 쿼리할 때 JSON으로 데이터를 보내고 받습니다. 그리고 JSON은 소프트웨어 애플리케이션의 클라이언트-서버 통신에도 널리 사용됩니다. 또한 범용 데이터 저장에도 JSON을 사용할 수 있습니다.
JSON의 형식은 Python 사전의 형식과 매우 유사합니다. 사전은 키-값 쌍으로 데이터를 저장하는 Python의 강력한 내장 데이터 구조입니다.
더 진행하기 전에 주목할 가치가 있는 몇 가지 사항이 있습니다.
- Python에서 JSON 객체는 사전으로 저장됩니다.
- JSON의 배열은 Python 목록으로 저장됩니다.
- JSON에서 부울 값은
true
및false
로 표시됩니다. Python에서 이들은 부울True
및False
로 변환됩니다.
JSON에서 Python으로 변환되는 데이터 유형에 대한 자세한 내용은 여기에서 문서를 참조하세요.
json
모듈은 Python 표준 라이브러리의 일부이므로 설치할 필요가 없습니다. 다음과 같이 현재 디렉토리로 가져올 수 있습니다.
import json
Python에서 JSON 문자열을 로드하는 방법
Python에서 JSON 문자열을 로드하는 일반적인 구문은 다음과 같습니다.
<dict_obj> = json.loads(<json_str>)
여기,
-
<dict_obj>
는 JSON 문자열을 로드하려는 Python 사전입니다. -
<json_str>
은 유효한 JSON 문자열입니다.
이것은 <json_str>
을 Python 사전 <dict_obj>
에 로드합니다.
예제를 코딩해 보겠습니다. 여기서 json_str
은 JSON 문자열입니다.
json_str = ''' { "books": [ { "title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908" }, { "title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927" } ] } '''
그리고 아래 코드 스니펫은 loads()
메서드를 사용하여 JSON 문자열 json_str
을 Python 사전에 로드하는 방법을 보여줍니다. 내장 type()
함수를 사용하여 py_dict
가 Python 사전인지 확인할 수 있습니다.
py_dict = json.loads(json_str) type(py_dict) # Output: dict print(py_dict) # Output {'books': [{'title': 'The Wind in the Willows', 'author': 'Kenneth Grahame', 'year': '1908'}, {'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}
위의 코드에서 볼 수 있듯이 JSON 문자열의 모든 필드는 py_dict
의 키-값 쌍입니다.
Python에서 JSON 문자열을 만드는 방법
파이썬 사전이 있다고 가정해 봅시다. 그러면 JSON 문자열을 어떻게 생성합니까?
다음 구문과 함께 dumps()
메서드를 사용하여 수행할 수 있습니다.
<json_str> = json.dumps(<dict_obj>)
여기,
-
<dict_obj>
는 JSON 문자열을 생성하려는 Python 사전입니다. -
<json_str>
은 결과 JSON 문자열입니다.
따라서 dumps()
메서드는 <dict_obj>
를 JSON 문자열 <json_str>
로 덤프합니다.
기존 Python 사전 py_dict
. 새 키 "movies"
를 추가해 보겠습니다. 다음 코드 스니펫에 표시된 대로 수행할 수 있습니다.
py_dict["movies"] = [{"title":"The Imitation Game","year":"2014", "lang":"en","watched":True}]
이제 dumps()
메서드를 사용하여 수정된 사전을 새 JSON 문자열 json_str2
로 덤프해 보겠습니다.
json_str2 = json.dumps(py_dict) print(json_str2) # Output {"books": [{"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"}, {"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}], "movies": [{"title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true}]}
위의 예에서 볼 수 있듯이 출력 JSON 문자열은 적절한 형식 없이는 읽기 어렵습니다. 선택적 매개변수 indent
를 사용하여 들여쓰기를 추가할 수 있습니다.
그리고 아래와 같이 indent
를 2와 같은 정수로 설정하여 이 작업을 수행할 수 있습니다.
json_str2 = json.dumps(py_dict, indent = 2) print(json_str2) # Output { "books": [ { "title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908" }, { "title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927" } ], "movies": [ { "title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true } ] }
출력이 들여쓰기로 어떻게 포맷되었는지 관찰하고 따라하기 쉽습니다.

참고 : 키를 알파벳 순서로 정렬하려면
sort_keys
매개변수를True
로 설정할 수 있습니다.
아래 코드 조각에서 볼 수 있듯이 이제 키가 알파벳 순서로 정렬되었습니다.
json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True) print(json_str2) # Output { "books": [ { "author": "Kenneth Grahame", "title": "The Wind in the Willows", "year": "1908" }, { "author": "Virginia Woolf", "title": "To the Lighthouse", "year": "1927" } ], "movies": [ { "lang": "en", "title": "The Imitation Game", "watched": true, "year": "2014" } ]
이제 키가 "author"
, "title"
및 "year"
알파벳 순서로 나타납니다.
지금까지 Python에서 JSON 문자열을 사용하는 방법을 배웠습니다. 다음 섹션에서는 JSON 파일로 작업하는 방법을 배웁니다.
Python에서 JSON 파일을 읽는 방법
Python에서 JSON 파일을 읽으려면 다음 구문을 사용하십시오.
json.load(<json-file>) # where <json-file> is any valid JSON file.
어떻게
load()
loads()
를 사용하는지 주목하십시오.loads()
는 JSON 문자열 을 로드하고load()
는 JSON 파일 을 로드합니다.
Python에서 파일로 작업할 때 컨텍스트 관리자 사용을 고려해야 합니다. 컨텍스트 관리자를 사용하지 않고 다음과 같이 파일 읽기를 시도할 수도 있습니다.
my_file = open('students.json','r') contents = my_file.read() print(contents) file.close()
파일을 닫지 않으면 리소스가 낭비될 수 있습니다.
그러나 컨텍스트 관리자 로 작업할 때 파일 작업이 완료되면 파일이 자동으로 닫힙니다.
그리고 아래와 같이 컨텍스트 관리자를 사용하여 파일을 읽을 수 있습니다.
with open('students.json','r') as file: data = json.load(file) print(data) # Output {'students': [{'roll_num': 'cs27', 'name': 'Anna', 'course': 'CS'}, {'roll_num': 'ep30', 'name': 'Kate', 'course': 'PHY'}]}
파일에서 읽을 때 모드를 읽기 로 지정하십시오(위 코드에서 'r'
로 표시됨).
참고 : 현재 디렉토리를 쉽게 탐색하려면 아래 이미지와 같이 JSON 파일이
main.py
와 동일한 폴더에 있는지 확인하십시오. JSON 파일이 다른 폴더에 있는 경우 파일 경로를 지정해야 합니다.

다음 섹션에서는 JSON 파일에 쓰는 방법을 배웁니다.
Python에서 JSON 파일에 쓰는 방법
기존 JSON 파일에 쓰거나 새 JSON 파일을 생성하려면 다음과 같이 dump()
메서드를 사용합니다.
json.dump(<dict_obj>,<json_file>) # where <dict_obj> is a Python dictionary # and <json_file> is the JSON file
따라서 위의 구문은 <dict_obj>
사전을 JSON 파일 <json_file>
에 덤프합니다.
이전 섹션에서 py_dict
사전이 있었습니다. 이제 이를 새 JSON 파일에 덤프해 보겠습니다. 이름을 new_file.json
으로 지정하겠습니다.
다음 코드 셀은 dump()
함수를 사용하는 방법을 보여줍니다.
with open('new_file.json','w') as file: json.dump(py_dict,file)
참고 : 쓰기 모드(
w
)에서 파일을 열면 파일이 있는 경우 내용을 덮어씁니다. 파일이 없으면 파일이 생성됩니다.
위의 코드 셀을 실행하면 현재 작업 디렉토리에 새로운 JSON 파일이 생성된 것을 볼 수 있습니다. 계속해서 JSON 파일의 내용을 검사할 수 있습니다.

파일에 쓸 때 주요 목표는 데이터 저장입니다. 서식을 유지하려면 indent
및 sort_keys
매개변수를 사용할 수도 있습니다.
결론
빠른 요약을 할 시간입니다.
이 자습서에서는 다음을 배웠습니다.
- JSON 사용의 기본,
-
loads()
및load()
메서드를 사용하여 각각 JSON 문자열 및 JSON 파일을 읽는 방법, -
dumps()
및dump()
메서드를 사용하여 Python 사전을 각각 JSON 문자열 및 JSON 파일로 덤프하는 방법.
이 튜토리얼이 도움이 되었기를 바랍니다. 즐거운 배움!
구문 분석, 형식 지정 및 유효성 검사를 위해 JSON 도구를 볼 수도 있습니다.