Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mengubah Data JSON ke Objek Python untuk Penyimpanan Pangkalan Data?
Senario: Aplikasi Django menerima data JSON daripada API Facebook yang perlu disimpan dalam pangkalan data. Aplikasi pada masa ini mengendalikan objek data mudah menggunakan Paparan tersuai, tetapi bergelut dengan struktur data yang kompleks.
Soalan: Bagaimanakah data JSON boleh diubah menjadi objek Python untuk penyimpanan dan manipulasi pangkalan data yang lebih mudah?
Untuk menukar data JSON kepada Python objek, seseorang boleh menggunakan struktur data khusus seperti SimpleNamespace dan namedtuple. Struktur ini membenarkan atribut dicipta secara dinamik berdasarkan kekunci data JSON.
Dalam Python3, SimpleNamespace boleh digunakan dengan object_hook dalam json.loads:
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)
Dalam Python2, namedtuple boleh digunakan sama:
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
Sebagai alternatif, fungsi boleh guna semula boleh ditakrifkan untuk memudahkan prosesnya:
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)
Dengan menggunakan teknik ini, data JSON yang kompleks boleh ditukar dengan cekap kepada objek Python, menjadikannya mudah untuk menyimpan dan memanipulasi dalam pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Data JSON ke Objek Python untuk Penyimpanan Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!