1
맞춤 인코딩을 시도했지만 오류가 발생합니다. 기본 사전이 성공적으로 표시됩니다Python에서 json 인코딩 문제가 발생했습니다.
{"first": "Jay", "last": "Loophole"}
Traceback (most recent call last):
File "json_dump.py", line 26, in <module>
print(json.dumps(c, cls=ContactEncoder))
File "/usr/lib/python3.5/json/__init__.py", line 237, in dumps
**kw).encode(obj)
File "/usr/lib/python3.5/json/encoder.py", line 198, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python3.5/json/encoder.py", line 256, in iterencode
return _iterencode(o, 0)
File "/usr/lib/python3.5/json/encoder.py", line 179, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <__main__.Contact object at 0x7ffb3445a400> is not JSON serializable
하지만, 사용자 정의 인코딩은 CLS 매개 변수로 전달 될 때 오류가 발생합니다 오류가 발생
#!/usr/bin/python3
import json
class Contact:
def __init__(self, first, last):
self.first = first
self.last = last
@property
def full_name(self):
return ("{} {}".format(self.first, self.last))
class ContactEncoder(json.JSONEncoder):
def defualt(self, obj):
if isinstance(obj, Contact):
return {"is_contact": 'T'
,"first": obj.first
,"last": obj.last
,"full_name": obj.full_name}
return super().defualt(obj)
if __name__ == "__main__":
c = Contact("Jay", "Loophole")
print(json.dumps(c.__dict__))
print(json.dumps(c, cls=ContactEncoder))
입니다 : 다음 코드 샘플에서 오류가 발생합니다. 오류의 원인에 대한 제안 사항이 있으십니까?
import json
class Contact:
def __init__(self, first, last):
self.first = first
self.last = last
@property
def full_name(self):
return ("{} {}".format(self.first, self.last))
class ContactEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Contact):
return {"is_contact": 'T'
,"first": obj.first
,"last": obj.last
,"full_name": obj.full_name}
return super().default(obj)
if __name__ == "__main__":
c = Contact("Jay", "Loophole")
print(json.dumps(c.__dict__))
print(json.dumps(c, cls=ContactEncoder))
당신은 this page에서 라이브를 확인할 수 있습니다 :
오타? 'defualt()'는'default()'이어야합니다. – dhke
@dhke 바로 그 것입니다. 오타를 수정하면 제대로 작동합니다. –
위대한, 감사합니다, 충분하지 않은주의! – alortimor