나는 파이썬 2.6 의 표준 json 모듈 을 사용하여 수레 목록을 직렬화하고 있습니다. 그러나 다음과 같은 결과가 나타납니다.
>>> import json
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
소수 두 자리로만 서식을 지정하고 싶습니다. 출력은 다음과 같아야합니다.
>>> json.dumps([23.67, 23.97, 23.87])
'[23.67, 23.97, 23.87]'
내 자신의 JSON 인코더 클래스 정의를 시도했습니다.
class MyEncoder(json.JSONEncoder):
def encode(self, obj):
if isinstance(obj, float):
return format(obj, '.2f')
return json.JSONEncoder.encode(self, obj)
이것은 유일한 float 객체에 대해 작동합니다.
>>> json.dumps(23.67, cls=MyEncoder)
'23.67'
그러나 중첩 된 개체에 대해서는 실패합니다.
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
나는 외부 의존성을 원하지 않으므로 표준 json 모듈을 고수하는 것을 선호합니다.
이것을 어떻게 할 수 있습니까?