Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

225
Visualizações
¿Qué es Python JSON serializable?

Tengo dos formas de representar el objeto Python por json.dumps()

Primero:

 person = { "name": "John", "age": 30, "city": "New York" }

Segundo:

 class Person: def _init_(self, name, age, city): self.name = name self.age = age self.city = city person = Person("John", 30, "New York")

Luego probé p1 = json.dumps(person) , la segunda forma diría it's not JSON serializable .

Entonces, básicamente para Python, json.dumps solo funciona para objetos integrados como el objeto dict.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Si está preguntando sobre Vanilla Python, la serialización podría hacerse de esta manera:

 import json class Person: def __init__(self, name, age, city): self.name = name self.age = age self.city = city def to_json(self): return json.dumps(self, default=lambda o: o.__dict__) person = Person("John", 30, "New York") print(person.to_json())

Entonces, solo estamos convirtiendo un objeto en un dictado usando el atributo __dict__ .

Pero si necesita algo más sofisticado, es posible que necesite DRF (Django REST Framework) o pydantic . Un ejemplo de cómo se podría hacer con DRF:

 from rest_framework import serializers from rest_framework.serializers import Serializer class Person: def __init__(self, name, age, city): self.name = name self.age = age self.city = city class PersonSerializer(Serializer): name = serializers.CharField() age = serializers.IntegerField() city = serializers.CharField() def create(self, validated_data): return Person(**validated_data) person = Person("John", 30, "New York") print(PersonSerializer(person).data)

De esta manera usted tiene un control mucho mejor sobre él. Ver documentos .

over 4 years ago · Santiago Trujillo Relatório

0

Sí, el módulo json solo sabe cómo serializar ciertos tipos integrados. Una manera fácil de trabajar con clases que tienen "campos" es el módulo de dataclasses de datos.

Ejemplo:

 from dataclasses import dataclass, asdict import json @dataclass class Person: name: str age: int city: str person = Person("John", 30, "New York") print(json.dumps(asdict(person)))

La función asdict() convierte la instancia de clase de datos en un dict que json puede serializar.

over 4 years ago · Santiago Trujillo Relatório

0

Con Python 3.6+, puede usar clases de datos en Python junto con la función auxiliar asdict para convertir una instancia de clase de datos en un objeto dict de Python.

Nota: Para la versión 3.6, necesitará un backport para el módulo de dataclasses de datos, ya que solo se convirtió en una función integrada de Python a partir de la versión 3.7.

 import json from dataclasses import dataclass, asdict @dataclass class Person: name: str age: int city: str person = Person("John", 30, "New York") person_dict = asdict(person) json_string = json.dumps(person_dict, indent=2) print(json_string)

Afuera:

 { "name": "John", "age": 30, "city": "New York" }

Si tiene un caso de uso más complejo o necesita (des) serializar un modelo de clase de datos anidado, consultaría una biblioteca externa como el asistente de clase de datos que admite ese caso de uso en particular.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda