Чтобы преобразовать строку JSON в класс объекта модуля в Python, вы можете использовать несколько методов. Вот несколько подходов с примерами кода:
Метод 1: использование модуля jsonи namedtuple
import json
from collections import namedtuple
def json_to_object(json_str, class_name):
json_data = json.loads(json_str)
obj_class = namedtuple(class_name, json_data.keys())
obj = obj_class(json_data)
return obj
json_string = '{"name": "John", "age": 30, "city": "New York"}'
class_name = 'Person'
person_obj = json_to_object(json_string, class_name)
print(person_obj.name) # Output: John
print(person_obj.age) # Output: 30
print(person_obj.city) # Output: New York
Метод 2. Использование модуля jsonи специального класса
import json
class Person:
def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
def json_to_object(json_str, class_name):
json_data = json.loads(json_str)
obj_class = globals()[class_name]
obj = obj_class(json_data)
return obj
json_string = '{"name": "John", "age": 30, "city": "New York"}'
class_name = 'Person'
person_obj = json_to_object(json_string, class_name)
print(person_obj.name) # Output: John
print(person_obj.age) # Output: 30
print(person_obj.city) # Output: New York
Метод 3. Использование модуля jsonи types.SimpleNamespace
import json
import types
def json_to_object(json_str):
json_data = json.loads(json_str)
obj = types.SimpleNamespace(json_data)
return obj
json_string = '{"name": "John", "age": 30, "city": "New York"}'
person_obj = json_to_object(json_string)
print(person_obj.name) # Output: John
print(person_obj.age) # Output: 30
print(person_obj.city) # Output: New York
Эти методы позволяют конвертировать строку JSON в объект Python с поведением, подобным классу. Вы можете получить доступ к атрибутам объекта, используя точечную запись.