티스토리 뷰

목차



    JSON Logo

     

    프로그래밍을 하다 보면 JSON은 빼놓을 수 없는 데이터 형식입니다. 개인적으로도 웹 개발을 하면서 수많은 API를 연동했고, 그 과정에서 JSON 데이터를 다룰 일이 많았습니다. 초보 개발자라면 JSON이 처음엔 다소 복잡하게 느껴질 수 있습니다. 하지만 Python과 함께하면 JSON을 쉽게 파싱하고 가공할 수 있습니다. 이번 글에서는 JSON의 기본 개념부터 Python으로 JSON을 다루는 방법까지, 실습을 통해 차근차근 알아보겠습니다.


    1. JSON이란 무엇인가?

    JSON(JavaScript Object Notation)은 데이터를 저장하고 전송하는 데 널리 사용되는 경량 데이터 형식입니다. 주로 웹 애플리케이션에서 서버와 클라이언트 간에 데이터를 교환하는 데 사용됩니다. JSON은 사람이 읽고 쓰기 쉽고, 기계가 해석하고 생성하기에도 간단한 형식을 가지고 있습니다.

    JSON의 특징

    1. 경량 데이터 형식: JSON은 텍스트 기반의 데이터 형식으로, 데이터 구조를 쉽게 나타낼 수 있습니다.
    2. 키-값 쌍: JSON은 { "키": "값" } 형태의 키-값 쌍으로 구성됩니다. 키는 항상 문자열이고, 값은 문자열, 숫자, 객체, 배열, true, false, null 등이 될 수 있습니다.
    3. 읽기 쉬운 구조: JSON은 중괄호({})와 대괄호([])로 객체와 배열을 표현합니다. 이는 데이터를 계층적이고 논리적으로 구조화할 수 있게 해줍니다.

    예시: JSON 데이터 구조

    {
      "name": "John Doe",
      "age": 30,
      "is_student": false,
      "address": {
        "street": "123 Main St",
        "city": "New York"
      },
      "courses": ["Math", "Science", "Art"]
    }

    위 JSON 예시에서 name, age, is_student는 기본 키-값 쌍입니다. address는 객체이며, courses는 배열로 구성되어 있습니다.


    2. Python에서 JSON 데이터 다루기: 기본 개념과 json 모듈 소개

    Python에서는 JSON 데이터를 다루기 위해 json 모듈을 사용합니다. 이 모듈은 JSON 형식의 데이터를 Python의 데이터 구조로 변환하거나, 반대로 Python 데이터를 JSON 형식으로 변환하는 기능을 제공합니다.

    Python에서 JSON 모듈 사용하기

    Python의 json 모듈을 사용하면 다음과 같은 작업을 할 수 있습니다:

    1. JSON 문자열을 Python 객체로 변환: JSON 데이터를 Python의 딕셔너리나 리스트로 변환하여 데이터를 쉽게 다룰 수 있습니다.
    2. Python 객체를 JSON 문자열로 변환: Python의 데이터 구조를 JSON 형식으로 변환하여 저장하거나 전송할 수 있습니다.

    예시: JSON 문자열을 Python 객체로 변환

    import json
    
    # JSON 문자열
    json_string = '{"name": "Alice", "age": 25, "is_student": true}'
    
    # JSON 문자열을 Python 딕셔너리로 변환
    data = json.loads(json_string)
    
    print(data)
    print(data["name"])  # 출력: Alice
    print(data["age"])   # 출력: 25
    • 설명: json.loads() 함수는 JSON 문자열을 Python의 딕셔너리로 변환합니다. 이제 데이터는 딕셔너리처럼 접근할 수 있습니다.

    3. Python에서 JSON 파일 읽기 및 쓰기

    Python을 사용하면 JSON 파일을 읽거나 저장하는 작업도 매우 간단합니다. 웹 애플리케이션이나 데이터 분석 작업에서 JSON 파일을 읽어와서 데이터를 처리하거나, 반대로 JSON 파일로 데이터를 저장하는 경우가 많습니다.

    예제 1: JSON 파일 읽기

    import json
    
    # JSON 파일 읽기
    with open('data.json', 'r') as file:
        data = json.load(file)
    
    print(data)
    • 설명: json.load() 함수는 파일로부터 JSON 데이터를 읽어와 Python 객체로 변환합니다. 이 과정에서 JSON 파일이 딕셔너리로 변환되므로 데이터를 쉽게 접근할 수 있습니다.

    예제 2: JSON 파일에 쓰기

    import json
    
    # Python 데이터
    data = {
        "name": "Bob",
        "age": 22,
        "courses": ["Math", "English", "History"]
    }
    
    # JSON 파일에 쓰기
    with open('output.json', 'w') as file:
        json.dump(data, file, indent=4)
    • 설명: json.dump() 함수는 Python 객체를 JSON 형식으로 파일에 저장합니다. indent 파라미터를 사용하여 파일을 읽기 쉽게 정렬할 수 있습니다.

    4. Python JSON 데이터 변환과 활용: 실습 예제

    Python에서는 JSON 데이터를 Python의 딕셔너리나 리스트와 상호 변환하여 다양한 처리를 할 수 있습니다. 이번 실습에서는 JSON 데이터를 활용하여 데이터를 변환하고 가공하는 방법을 배워보겠습니다.

    실습 예제 1: JSON 데이터에서 특정 정보 추출하기

    import json
    
    json_data = '''
    {
      "employees": [
        {"name": "John", "age": 28, "department": "HR"},
        {"name": "Doe", "age": 32, "department": "Engineering"},
        {"name": "Jane", "age": 24, "department": "Marketing"}
      ]
    }
    '''
    
    # JSON 문자열을 Python 객체로 변환
    data = json.loads(json_data)
    
    # 특정 부서에 속한 직원 이름 출력하기
    for employee in data["employees"]:
        if employee["department"] == "Engineering":
            print(employee["name"])
    • 설명: JSON 데이터를 파싱하여 특정 조건을 만족하는 데이터를 출력합니다. 위 예제에서는 "Engineering" 부서에 속한 직원의 이름만 출력합니다.

    실습 예제 2: Python 데이터를 JSON 문자열로 변환하기

    import json
    
    # Python 데이터
    person = {
        "name": "Charlie",
        "age": 29,
        "hobbies": ["Reading", "Hiking", "Coding"]
    }
    
    # Python 객체를 JSON 문자열로 변환
    json_string = json.dumps(person, indent=2)
    
    print(json_string)
    • 설명: json.dumps() 함수는 Python 객체를 JSON 문자열로 변환합니다. 이때 indent 파라미터로 출력 형식을 지정할 수 있습니다.

    5. JSON 데이터의 유효성 검사와 오류 처리

    JSON 데이터를 다루다 보면, 유효하지 않은 JSON 형식이나 데이터 누락으로 인해 오류가 발생할 수 있습니다. Python에서는 예외 처리(try-except)를 통해 JSON 데이터의 유효성을 검사하고 오류를 처리할 수 있습니다.

    예제: JSON 데이터 유효성 검사

    import json
    
    invalid_json = '{"name": "Eve", "age": 25, "city": "London"'  # 마지막 중괄호 누락
    
    try:
        data = json.loads(invalid_json)
    except json.JSONDecodeError as e:
        print("유효하지 않은 JSON 형식입니다:", e)
    • 설명: JSON 문자열이 유효하지 않으면 json.JSONDecodeError가 발생합니다. try-except 블록을 사용하여 오류를 처리하고 유효하지 않은 JSON 형식을 검출할 수 있습니다.

    요약

    Python에서 JSON을 다루는 방법은 매우 직관적이며, Python의 json 모듈을 사용하면 쉽게 데이터를 파싱하고 저장할 수 있습니다. 이번 글에서는 JSON의 기본 개념부터 Python에서 JSON 데이터를 다루는 방법까지 실습을 통해 설명했습니다. Python의 json 모듈을 활용하면 웹 애플리케이션, 데이터 분석, API 연동 등에서 효율적으로 데이터를 처리할 수 있습니다. JSON과 Python을 익히고 나면, 다양한 데이터 소스와 자유롭게 연동할 수 있는 자신감을 가질 수 있을 것입니다.

     

    디스크립션: Python으로 JSON 데이터를 쉽게 다루는 방법을 배워보세요. JSON의 기본 개념부터 Python으로 JSON 파일을 읽고 쓰는 방법, 예외 처리까지 실습을 통해 익힐 수 있습니다.