programing

오브젝트가 Python에서 JSON serializable인지 쉽게 확인할 수 있는 방법이 있나요?

cafebook 2023. 3. 14. 21:54
반응형

오브젝트가 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

반응형