본문 바로가기
파이썬

파이썬 TypeError : 'float32'유형의 개체가 JSON 직렬화 가능하지 않습니다.

by º기록 2020. 10. 8.
반응형

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 () 를 전달하는 모든 객체를 변환 테이블 을 통해 문자열 형식으로 변환하려고합니다. 일부 유형 만 지원합니다 (아래 문서 참조).

이것이이 문제를 피하기 위해 문자열을 전달하는 것이 좋은 생각이라고 생각하는 이유입니다. numpy.float32 는 테이블에 없습니다.

일부는 문자열을 dumps 에 명시 적으로 전달하는 것이 "잘못된 것 같습니다"라고 언급했기 때문에 여기에 문서를 추가하겠습니다.

json.dumps (obj, *, skipkeys = False, ensure_ascii = True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw) Serialize obj to a JSON formatted str using this conversion table. The arguments have dump ()에서와 같은 의미입니다.

참고 JSON의 키 / 값 쌍에있는 키는 항상 str 유형입니다. 언제 a dictionary is converted into JSON, all the keys of the dictionary are coerced to strings. As a result of this, if a dictionary is converted into JSON and then back into a dictionary, the dictionary may not equal the original one. That is, loads(dumps(x)) != x if x has 비 문자열 키.


 

참조 페이지 https://stackoverflow.com/questions/53082708

 

 

반응형

댓글