This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Title: There is no way to json encode object to str.
Type: Stage:
Components: Library (Lib) Versions:
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: ezio.melotti, iritkatriel, kaltovichartyom, rhettinger
Priority: normal Keywords:

Created on 2020-12-30 20:22 by kaltovichartyom, last changed 2022-04-11 14:59 by admin.

Messages (2)
msg384085 - (view) Author: Artyom Kaltovich (kaltovichartyom) Date: 2020-12-30 20:22

At first I want to say thank you for all your efforts in python development. I really appreciate it. :)

I am trying to convert custom object to json. 

But, I've found a problem. JSONEncoder has ``default`` method for converting custom objects to some primitives and ``encode`` for converting structures.

But what if I want to return completed json string? I can't do it in ``default``, because JSONEncoder will think it is string and encode it accordingly later in ``iterencode`` method.

Then I tried redefine encode, but it is called with the dict(array_name=default(o)) so I should convert the dict as a whole and basically reimplement all conversions (for int, float, and lists of course).

Did I missed something or there is no way to do it?

I suggest to introduce another method, e.g. encode_obj and call it there:
   o = _default(o)
   yield from _iterencode(o, _current_indent_level)
   o = _encode_obj(_default(o))
   yield from _iterencode(o, _current_indent_level)

If you are agree I would be happy to implement it.

Best Regards,
msg400776 - (view) Author: Irit Katriel (iritkatriel) * (Python committer) Date: 2021-08-31 20:34
See also Issue35111.
Date User Action Args
2022-04-11 14:59:39adminsetgithub: 86957
2021-08-31 20:34:24iritkatrielsetnosy: + iritkatriel
messages: + msg400776
2021-08-31 20:32:54iritkatrielsetnosy: + rhettinger, ezio.melotti
2020-12-30 20:22:51kaltovichartyomcreate