Python에서 JSON을 구문 분석하는 방법

JSON은 데이터 교환에 널리 사용되는 형식입니다. Python은 JSON 데이터를 구문 분석하고 작업하기 위한 내장 JSON 모듈과 함께 제공됩니다. 그리고 이 튜토리얼은 파이썬에서 JSON으로 작업하는 것에 대한 모든 것을 가르칠 것입니다.

이 튜토리얼을 마치면 다음을 배우게 될 것입니다.

  • JSON의 기본,
  • Python에서 JSON 문자열을 구문 분석하고 생성하는 방법 및
  • Python에서 JSON 파일을 읽고 쓰는 방법.

시작합시다!⏳

JSON이란 무엇입니까?

JSON은 JavaScript 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>)

여기,

  • 는 JSON 문자열을 로드하려는 Python 사전입니다.
  • 은 유효한 JSON 문자열입니다.

이것은 을 Python 사전 에 로드합니다.

예제를 코딩해 보겠습니다. 여기서 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"
        }
    ]
}
'''

그리고 아래 코드 스니펫은 load() 메서드를 사용하여 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>)

여기,

  • 는 JSON 문자열을 생성하려는 Python 사전입니다.
  • 은 결과 JSON 문자열입니다.

따라서 dumps() 메서드는 를 JSON 문자열 로 덤프합니다.

기존 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를 사용하여 들여쓰기를 추가할 수 있습니다.

그리고 아래와 같이 들여쓰기를 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"
    }
  ]

이제 키가 “저자”, “제목” 및 “연도”의 알파벳 순서로 나타납니다.

지금까지 Python에서 JSON 문자열을 사용하는 방법을 배웠습니다. 다음 섹션에서는 JSON 파일로 작업하는 방법을 배웁니다.

Python에서 JSON 파일을 읽는 방법

Python에서 JSON 파일을 읽으려면 다음 구문을 사용하십시오.

json.load(<json-file>) 

# where <json-file> is any valid JSON file.

어떻게 load() 메서드가 아니라 load() 메서드를 사용하는지 주목하십시오. load()는 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 파일이 다른 폴더에 있는 경우 파일 경로를 지정해야 합니다.

Python에서 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 

따라서 위의 구문은 사전을 JSON 파일 에 덤프합니다.

이전 섹션에서 py_dict 사전이 있었습니다. 이제 이를 새 JSON 파일에 덤프해 보겠습니다. 이름을 new_file.json으로 지정하겠습니다.

다음 코드 셀은 dump() 함수를 사용하는 방법을 보여줍니다.

with open('new_file.json','w') as file:
  json.dump(py_dict,file)

참고: 쓰기 모드(w)에서 파일을 열면 파일이 있는 경우 내용을 덮어씁니다. 파일이 없으면 파일이 생성됩니다.

위의 코드 셀을 실행하면 현재 작업 디렉토리에 새로운 JSON 파일이 생성된 것을 볼 수 있습니다. 계속해서 JSON 파일의 내용을 검사할 수 있습니다.

Python에서 JSON 파일 생성

파일에 쓸 때 주요 목표는 데이터 저장입니다. 서식을 유지하려면 indent 및 sort_keys 매개변수를 사용할 수도 있습니다.

결론

⏲ ​​간략한 요약을 할 시간입니다.

이 자습서에서는 다음을 배웠습니다.

  • JSON 사용의 기본,
  • load() 및 load() 메서드를 사용하여 각각 JSON 문자열 및 JSON 파일을 읽는 방법,
  • dumps() 및 dump() 메서드를 사용하여 Python 사전을 각각 JSON 문자열 및 JSON 파일로 덤프하는 방법.

이 튜토리얼이 도움이 되었기를 바랍니다. 즐거운 배움!

구문 분석, 형식 지정 및 유효성 검사를 위해 JSON 도구를 볼 수도 있습니다.

  Roku 기록 채널이 작동하지 않는 문제를 해결하는 방법