Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

JSON 객체를 파이썬 함수의 매개변수로 전달하는 방법

파이썬에서는 JSON 형식의 문자열을 함수의 매개변수로 그대로 전달할 수 있습니다. 이때 함수 내부에서 json.loads()를 호출하면 JSON 문자열이 파이썬 딕셔너리(dict) 객체로 변환되어, 일반 딕셔너리처럼 자유롭게 다룰 수 있습니다. 아래 예제를 통해 그 과정을 살펴보겠습니다.

예제 코드

import json

json_string = '{"name":"Rupert", "age": 25, "desig":"developer"}'
print(type(json_string))    # 전달 전 데이터 타입 확인

def func(strng):
    a = json.loads(strng)      # JSON 문자열 → 파이썬 딕셔너리 변환
    print(type(a))
    for k, v in a.items():     # 키-값 쌍 순회
        print(k, v)
    print(dict(a))             # 딕셔너리 형태로 출력

func(json_string)

실행 결과

<class 'str'>
<class 'dict'>
name Rupert
age 25
desig developer
{'name': 'Rupert', 'age': 25, 'desig': 'developer'}

코드 동작 방식

  1. JSON 문자열 정의: 이름, 나이, 직책 정보를 담은 JSON 문자열을 변수에 저장합니다. 이 시점의 데이터 타입은 str입니다.
  2. 함수 호출: JSON 문자열을 그대로 func() 함수의 매개변수로 전달합니다.
  3. json.loads() 변환: 함수 내부에서 json.loads()가 실행되면서 JSON 문자열이 dict 타입의 딕셔너리로 변환됩니다.
  4. 데이터 활용: 변환된 딕셔너리는 items() 메서드로 키-값 쌍을 순회하거나, 키를 통해 특정 값에 바로 접근할 수 있습니다.

알아두면 좋은 점

  • JSON 문자열은 함수에 전달된 시점에는 단순한 문자열(str)이며, json.loads()가 실행된 후에야 딕셔너리로 변환됩니다.
  • 숫자 값(예: "age": 25)은 변환 과정에서 자동으로 int 타입으로 처리됩니다.
  • 파이썬 2에서 사용되던 iteritems()는 파이썬 3에서 제거되었으므로, 위 예제처럼 items()를 사용하는 것이 좋습니다.

대안: 미리 파싱된 딕셔너리 전달하기

JSON을 미리 파싱해 둔 상태라면, 문자열 대신 딕셔너리 객체 자체를 매개변수로 넘기는 것이 더 효율적입니다. 이 경우 함수 내부에서 json.loads()를 반복 호출할 필요가 없어 성능 면에서 유리합니다.

import json

data = json.loads('{"name":"Rupert", "age": 25, "desig":"developer"}')
func(data)   # 이미 dict이므로 함수 안에서 바로 사용 가능