반응형
오브젝트가 Python에서 JSON serializable인지 쉽게 확인할 수 있는 방법이 있나요?
오브젝트가 JSON 시리얼화 가능한지 여부를 확인하려고 했습니다.왜냐하면 많은 것을 가진 사전이 있었기 때문입니다.이 시점에서 키를 루핑하여 JSON 시리얼화 가능 여부를 판별하여 삭제할 수 있기 때문입니다.예를 들어 다음과 같습니다(기능 여부를 확인합니다).
def remove_functions_from_dict(arg_dict):
'''
Removes functions from dictionary and returns modified dictionary
'''
keys_to_delete = []
for key,value in arg_dict.items():
if hasattr(value, '__call__'):
keys_to_delete.append(key)
for key in keys_to_delete:
del arg_dict[key]
return arg_dict
대신 if 스테이트먼트가 JSON의 시리얼 가능한 오브젝트를 체크하고 위와 같은 방법으로 딕셔너리에서 삭제하는 방법이 있습니까?
@shx2의 답변은 충분하지만, 어떤 예외를 포착했는지 지정하는 것이 좋습니다.
def is_jsonable(x):
try:
json.dumps(x)
return True
except (TypeError, OverflowError):
return False
OverflowError는 x에 JSON이 인코딩할 수 없을 정도로 큰 숫자가 포함되어 있을 때 느려집니다.여기서 관련 답변을 찾을 수 있습니다.
허락보다 용서를 구하는 게 더 쉽죠
import json
def is_jsonable(x):
try:
json.dumps(x)
return True
except:
return False
그러면 코드:
for key,value in arg_dict.items():
if not is_jsonable(value):
keys_to_delete.append(key)
언급URL : https://stackoverflow.com/questions/42033142/is-there-an-easy-way-to-check-if-an-object-is-json-serializable-in-python
반응형
'programing' 카테고리의 다른 글
여러 HOC 래퍼를 사용하여 React 컴포넌트를 내보내시겠습니까? (0) | 2023.03.14 |
---|---|
JSON 키 이름 변경 방법 (0) | 2023.03.14 |
각도 구성 요소 외부의 클릭 감지 (0) | 2023.03.14 |
jss 색상의 불투명도를 변경하는 방법 (0) | 2023.03.14 |
Ajax 로딩된 콘텐츠에서 이벤트를 바인드하는 방법 (0) | 2023.03.14 |