Методы Python для преобразования строки JSON в класс объекта модуля

Чтобы преобразовать строку 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 с поведением, подобным классу. Вы можете получить доступ к атрибутам объекта, используя точечную запись.