본문 바로가기
Python

파이썬 JSON의 데이터 추출 및 조작하기

by 노마드 산코디 2023. 9. 25.
728x90

이번 포스팅에서는 파이썬 JSON의 데이터 추출과 조작하는 내용을 주제로 정리해 보려고 합니다. JSON은 데이터 교환 형식으로 널리 사용되며, 파이썬에서 JSON 데이터를 처리하는 데 필수적인 스킬 중 하나입니다. 이번 글을 통해 JSON 데이터를 손쉽게 다루고 파이썬을 활용하여 데이터를 추출하고 조작하는 방법을 알아보도록 하겠습니다.

 

 

 


1. JSON 데이터의 구조 이해

JSON(JavaScript Object Notation)은 데이터를 효율적으로 저장하고 교환하기 위한 경량의 데이터 형식입니다. 파이썬에서는 JSON 데이터를 다룰 때 이러한 구조를 이해하는 것이 중요합니다.


1. 객체 (Object)
JSON 데이터는 중괄호 {}로 둘러싸인 키-값 쌍의 집합으로 구성됩니다. 각 키-값 쌍은 객체 내에 저장되며, 각 쌍은 쉼표로 구분됩니다.

{
    "name": "Alice",
    "age": 30,
    "city": "New York"
}



2. 배열 (Array)
JSON 배열은 대괄호 []로 둘러싸인 값의 목록으로 구성됩니다. 각 값은 쉼표로 구분됩니다.

[1, 2, 3, 4, 5]



3. 값 (Value)
JSON 값은 문자열, 숫자, 불리언, 객체, 배열, null 등 다양한 데이터 타입을 가질 수 있습니다.

  • 문자열 ("Hello, World")
  • 숫자 (41)
  • boolean (true 또는 false)
  • null


4. 키 (Key)
JSON 객체의 키는 문자열로 표현되며, 키와 값은 콜론 :으로 구분됩니다. 키는 객체 내에서 고유해야 합니다.


5. 중첩된 구조
JSON 객체 또는 배열 내에 다른 객체나 배열을 중첩하여 사용할 수 있습니다.

{
    "person": {
        "name": "Bob",
        "age": 25
    },
    "scores": [90, 85, 78]
}



6. 가독성
JSON 데이터는 사람이 읽기 쉽도록 들여쓰기를 사용하여 구조화됩니다.


파이썬에서 JSON 데이터를 다룰 때는 이러한 구조를 이해하고, json 모듈을 사용하여 파이썬 객체로 변환하거나 JSON 문자열로 직렬화할 수 있습니다. 이러한 이해는 JSON 데이터를 추출하고 조작하는 데 중요한 역할을 합니다.







2. JSON 데이터 추출



1. json 모듈 import
먼저, json 모듈을 임포트해야 합니다.

import json



2. JSON 문자열을 파이썬 객체로 변환
json.loads() 함수를 사용하여 JSON 문자열을 파이썬 객체로 변환할 수 있습니다.

json_string = '{"name": "Alice", "age": 30, "city": "New York"}'
data = json.loads(json_string)



3. JSON 파일을 파이썬 객체로 변환
JSON 파일을 읽어서 파이썬 객체로 변환하려면 json.load() 함수를 사용합니다.

with open('data.json', 'r') as json_file:
    data = json.load(json_file)



4. JSON 객체 내의 값을 추출
JSON 객체 내의 값을 추출하려면 해당 키에 접근합니다.

name = data['name']
age = data['age']



5. 중첩된 객체 및 배열 내의 값을 추출
중첩된 JSON 객체나 배열 내의 값을 추출하려면 접근 경로를 지정합니다.

person_name = data['person']['name']
scores = data['scores']



6. 키가 존재하는지 확인
in 연산자를 사용하여 특정 키가 JSON 객체 내에 존재하는지 확인할 수 있습니다.

if 'city' in data:
    # 'city' 키가 존재할 때 처리



7. 예외 처리
JSON 데이터를 다룰 때 예외 처리를 고려해야 합니다. json.JSONDecodeError 예외를 처리하여 JSON 파싱 오류를 처리할 수 있습니다.

try:
    data = json.loads(json_string)
except json.JSONDecodeError as e:
    print(f"JSON 파싱 오류: {e}")



8. 데이터 조작
JSON
 데이터를 수정하려면 필요한 값을 변경한 후 다시 JSON 문자열로 직렬화할 수 있습니다.

data['age'] = 31
updated_json_string = json.dumps(data)




이러한 방법을 사용하여 파이썬에서 JSON 데이터를 추출하고 조작할 수 있습니다. JSON 데이터를 파이썬 객체로 변환하면 파이썬의 강력한 기능을 활용하여 데이터를 처리하고 분석할 수 있습니다.







3. JSON 데이터 조작

JSON 데이터를 파이썬 객체로 변환한 후 데이터를 수정하고 다시 JSON 형식으로 직렬화할 수 있습니다.


1. JSON 데이터 읽기
먼저 JSON 데이터를 읽어와서 파이썬 객체로 변환합니다.

import json

# JSON 데이터 읽기
with open('data.json', 'r') as json_file:
    data = json.load(json_file)



2. JSON 데이터 수정
필요한 데이터를 수정하거나 추가할 수 있습니다. 예를 들어, 나이를 수정하고 새로운 키-값 쌍을 추가할 수 있습니다.

data['age'] = 31
data['new_key'] = 'new_value'



3. 중첩된 데이터 수정
중첩된 JSON 객체나 배열 내의 데이터도 수정할 수 있습니다.

data['address']['city'] = 'Los Angeles'
data['scores'][0] = 95



4. JSON 데이터 삭제
필요 없는 데이터를 삭제하려면 del을 사용합니다.

del data['new_key']



5. 데이터 유형 변환
데이터를 다른 유형으로 변환할 수 있습니다. 예를 들어, 숫자를 문자열로 변환하거나, 문자열을 숫자로 변환할 수 있습니다.

data['age'] = str(data['age'])
data['score'] = int(data['score'])



6. JSON 데이터 직렬화
JSON
 데이터를 다시 JSON 문자열로 직렬화하여 파일에 쓸 수 있습니다.

with open('updated_data.json', 'w') as json_file:
    json.dump(data, json_file, indent=4)



7. 예외 처리
JSON
 데이터를 수정할 때 예외 처리를 고려해야 합니다. 예를 들어, 존재하지 않는 키에 접근하려고 할 때의 예외 처리를 추가할 수 있습니다.

try:
    data['non_existent_key'] = 'value'
except KeyError:
    print("키가 존재하지 않습니다.")




JSON 데이터를 조작하는 과정에서 데이터의 일관성과 안정성을 유지하기 위해 주의 깊게 다뤄야 합니다. 필요한 경우 데이터의 백업을 유지하고 변경사항을 주기적으로 저장하는 것이 좋습니다.







4. JSON의 보안 고려사항



1. 입력 검증 (Input Validation)
JSON 데이터를 수신할 때 입력을 검증하십시오. 유효하지 않은 JSON 데이터를 수신하면 파싱 오류를 유발할 수 있으므로, 데이터의 유효성을 검사하여 악성 입력을 걸러내세요.

2. JSON 파싱 오류 처리
json 모듈의 파싱 함수(json.loads() 또는 json.load())를 사용할 때, json.JSONDecodeError와 같은 예외를 처리하여 오류 메시지를 기록하고 사용자에게 노출하지 않도록 합니다.

try:
    data = json.loads(json_string)
except json.JSONDecodeError as e:
    # 예외 처리
    print(f"JSON 파싱 오류: {e}")



3. Cross-Site Scripting (XSS) 방지
JSON 데이터를 웹 페이지에 표시할 때, HTML 이스케이프를 수행하여 스크립트 삽입 공격(XSS)을 방지하세요. 이를 위해 html.escape() 또는 관련된 라이브러리를 사용하세요.

4. 외부 데이터 신뢰도
JSON 데이터를 외부에서 받아오는 경우, 데이터의 신뢰도를 확인하세요. 신뢰할 수 없는 소스로부터 받은 JSON 데이터는 안전한 환경에서 처리해야 합니다.

5. 비밀번호 노출 방지
JSON 데이터에 중요한 정보(예: 비밀번호)를 포함하지 마세요. JSON 데이터는 클라이언트와 서버 간에 주고받을 수 있으며, 중요한 정보가 노출될 수 있습니다.

6. 보안 헤더 설정
웹 애플리케이션에서 JSON 데이터를 서비스할 때, 보안 헤더를 설정하여 다른 도메인에서의 접근을 제한하세요. 이를 위해 CORS(Cross-Origin Resource Sharing) 헤더를 설정할 수 있습니다.

7. 서버 측에서 데이터 검증
JSON 데이터를 서버로 보내기 전에 서버 측에서 추가적인 검증을 수행하세요. 입력 데이터를 검증하고 필요한 경우 데이터를 변환하기 전에 검사하여 데이터 일관성을 유지하세요.

8. 보안 업데이트
사용하는 JSON 라이브러리 및 파이썬 버전은 항상 최신 상태여야 합니다. 보안 업데이트 및 취약점 패치를 시스템에 적용하세요.



JSON 데이터를 처리할 때 이러한 보안 고려사항을 준수하면 데이터 무결성과 사용자의 개인 정보 보호를 향상시킬 수 있습니다.








최종 정리

오늘은 파이썬 JSON의 데이터 추출과 조작하는 방법에 대해서 정리해 보았습니다. JSON은 데이터 교환 형식으로 널리 사용되며, 파이썬에서 이 데이터를 효과적으로 다루는 방법을 알아보았습니다. JSON 데이터를 파이썬 객체로 변환하고 필요한 정보를 추출하고 조작하는 방법은 파이썬 프로그래밍에 있어서 매우 중요한 부분입니다. 또한 보안 고려사항을 고려하여 안전하게 JSON 데이터를 처리하는 것이 좋습니다.

감사합니다.

728x90
반응형