mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Fix unbound method call for JSONEncoder (#17970)
* Fix unbound method call for JSONEncoder The way it is currently it will lead to unbound method error ```python In [1]: import json In [2]: json.JSONEncoder.default('object_here') --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-2-872fdacfda50> in <module>() ----> 1 json.JSONEncoder.default('object_here') TypeError: unbound method default() must be called with JSONEncoder instance as first argument (got str instance instead) ``` But what is really wanted is to let the json module to raise the "is not serializable error" which demands a bounded instance of `JSONEncoder()` ```python In [3]: json.JSONEncoder().default('object_here') --------------------------------------------------------------------------- TypeError: 'object_here' is not JSON serializable ``` BTW: I think it would try to call `.to_json` of object before raising as it is a common pattern. * Calling JSONEncoder bounded `default` method using super()
This commit is contained in:
parent
20aedf90e7
commit
b06fb2022c
1 changed files with 1 additions and 1 deletions
|
@ -67,7 +67,7 @@ class AnsibleJSONEncoder(json.JSONEncoder):
|
|||
if isinstance(o, HostVars):
|
||||
return dict(o)
|
||||
else:
|
||||
return json.JSONEncoder.default(o)
|
||||
return super(AnsibleJSONEncoder, self).default(o)
|
||||
|
||||
def to_yaml(a, *args, **kw):
|
||||
'''Make verbose, human readable yaml'''
|
||||
|
|
Loading…
Reference in a new issue