programing

TypeError: 'float32' 유형의 개체는 JSON을 직렬화할 수 없습니다.

lastmoon 2023. 3. 8. 21:42
반응형

TypeError: 'float32' 유형의 개체는 JSON을 직렬화할 수 없습니다.

같이 일하고 있어요numpy.float32숫자에는 들어가지 않습니다.JSON이 문제를 극복하기 위한 올바른 접근법은 무엇입니까?

import numpy as np
import json

a = np.float32(1)
json.dumps(a)

TypeError: Object of type 'float32' is not JSON serializable

문자열이어야 하기 때문에 다음을 수행할 수 있습니다.

json.dumps(str(a))

편집:

JSON은 객체 데이터를 직렬화하는 형식입니다.Python 타입에 대해서는 별로 신경쓰지 않고, json 패키지는 어떤 오브젝트라도 번역하려고 합니다.json.dumps()을 통해 현악기 형태로conversion table일부 유형만 지원합니다(아래 문서 참조).

이 문제를 피하기 위해 문자열을 건네주는 것이 좋다고 생각하는 이유는 다음과 같습니다.numpy.float32테이블에는 없어요

일부에서는 스트링을 명시적으로 전달한다고 코멘트하고 있습니다.dumps"잘못된 것 같다" 여기에 문서를 추가합니다.

json.disci(obj, *, skipkeys=False, secure_ascii=)맞아요, check_backs=True, allow_nan=True, cls=None, ind=None, separators=None, default=None, sort_keys=False, **kw) 이 변환 테이블을 사용하여 obj를 JSON 형식의 스트링으로 시리얼화합니다.인수의 의미는 dump()와 동일합니다.

참고 JSON의 키/값 쌍의 키는 항상 str 유형입니다.사전이 JSON으로 변환되면 사전의 모든 키가 문자열로 강제됩니다.따라서 사전을 JSON으로 변환했다가 다시 사전으로 변환하면 사전이 원본 사전과 같지 않을 수 있습니다.즉, x에 문자열이 아닌 키가 있는 경우 loads(x) != x가 됩니다.

다음 공식 문서에서 인용:https://docs.python.org/3/library/json.html

언급URL : https://stackoverflow.com/questions/53082708/typeerror-object-of-type-float32-is-not-json-serializable

반응형