> 백엔드 개발 > 파이썬 튜토리얼 > JSON 데이터를 데이터베이스 저장을 위한 Python 개체로 변환하는 방법은 무엇입니까?

JSON 데이터를 데이터베이스 저장을 위한 Python 개체로 변환하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-08 08:14:02
원래의
650명이 탐색했습니다.

How to Transform JSON Data into Python Objects for Database Storage?

JSON 데이터를 데이터베이스 저장소용 Python 객체로 변환

시나리오: Django 애플리케이션은 저장해야 하는 Facebook API로부터 JSON 데이터를 받습니다. 데이터베이스에서. 애플리케이션은 현재 사용자 정의 보기를 사용하여 간단한 데이터 개체를 처리하지만 복잡한 데이터 구조로 인해 어려움을 겪고 있습니다.

질문: 더 쉬운 데이터베이스 저장 및 조작을 위해 JSON 데이터를 Python 개체로 변환하려면 어떻게 해야 합니까?

해결책: 고급 데이터 구조를 사용한 JSON 구문 분석

JSON 데이터를 Python 객체로 변환하려면 SimpleNamespace 및 Namedtuple과 같은 특수 데이터 구조를 사용할 수 있습니다. 이러한 구조를 사용하면 JSON 데이터 키를 기반으로 속성을 동적으로 생성할 수 있습니다.

Python3에서는 SimpleNamespace를 json.loads의 object_hook과 함께 사용할 수 있습니다.

import json
from types import SimpleNamespace

data = '{"name": "John Smith", "hometown": {"name": "New York", "id": 123}}'

# Parse JSON into an object with attributes corresponding to dict keys.
x = json.loads(data, object_hook=lambda d: SimpleNamespace(**d))
print(x.name, x.hometown.name, x.hometown.id)
로그인 후 복사

Python2에서는 Namedtuple을 다음과 같이 사용할 수 있습니다. 유사하게 사용:

import json
from collections import namedtuple

data = '{"name": "John Smith", "hometown": {"name": "New York", "id": 123}}'

# Parse JSON into an object with attributes corresponding to dict keys.
x = json.loads(data, object_hook=lambda d: namedtuple('X', d.keys())(*d.values()))
print x.name, x.hometown.name, x.hometown.id
로그인 후 복사

또는 재사용 가능한 함수를 정의하여 프로세스를 단순화할 수 있습니다.

def _json_object_hook(d): return namedtuple('X', d.keys())(*d.values())
def json2obj(data): return json.loads(data, object_hook=_json_object_hook)

x = json2obj(data)
로그인 후 복사

이러한 기술을 사용하면 복잡한 JSON 데이터를 Python 객체로 효율적으로 변환할 수 있습니다. 데이터베이스에 저장하고 조작하는 것이 간단해졌습니다.

위 내용은 JSON 데이터를 데이터베이스 저장을 위한 Python 개체로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿