Serializing pydantic enums
Larry Martell
larry.martell at gmail.com
Wed May 29 15:27:04 EDT 2024
On Tue, May 28, 2024 at 11:46 AM Left Right via Python-list
<python-list at python.org> wrote:
>
> Most Python objects aren't serializable into JSON. Pydantic isn't
> special in this sense.
>
> What can you do about this? -- Well, if this is a one-of situation,
> then, maybe just do it by hand?
>
> If this is a recurring problem: json.dumps() takes a cls argument that
> will be used to do the serialization. Extend json.JSONEncoder and
> implement the encode() method for the encoder class you are passing. I
> believe that the official docs have some information about this too.
Yeah, I know I can do this, but I seem to recall reading that pydantic
handled serialization. Guess not.
> On Tue, May 28, 2024 at 2:50 PM Larry Martell via Python-list
> <python-list at python.org> wrote:
> >
> > Just getting started with pydantic. I have this example code:
> >
> > class FinishReason(Enum):
> > stop = 'stop'
> >
> > class Choice(BaseModel):
> > finish_reason: FinishReason = Field(...)
> >
> >
> > But I cannot serialize this:
> >
> > json.dumps(Choice(finish_reason=FinishReason.stop).dict())
> > *** TypeError: Object of type FinishReason is not JSON serializable
> >
> >
> > I get the object not the value:
> >
> > (Pdb) Choice(finish_reason=FinishReason.stop)
> > Choice(finish_reason=<FinishReason.stop: 'stop'>)
> >
> >
> > Also tried it with .value, same result.
> >
> > What am I missing here?
More information about the Python-list
mailing list