json 형태로 특정 데이터를 dump 하려고 했는데, 다음과 같은 에러가 떴다.
TypeError: Object of type bytes is not JSON serializable
bytes 데이터는 직렬화하지 못한다는 이야기다.
오류를 해결하기 위해선 bytes 데이터를 직렬화 가능한 다른 데이터로 변환해야 했기에, 기존 데이터를 가공했어야 했다.
새로 삽질을 해야 하나 생각하던 중 dumps 함수에는 default라는 인자가 있다는 걸 알게 되었다.
이 인자는 직렬화 과정에서 알아먹지 못하는 데이터를 처리하는 용도로 사용되고 있었다.
그래서 이를 활용해 아래와 같은 코드를 작성했다.
# using function
import json
data = {'message': b'\x01\x02\x03'}
def _convert(obj):
return list(obj)
dump = json.dumps(data, default=_convert)
print(dump)
# using lambda
import json
data = {'message': b'\x01\x02\x03'}
dump = json.dumps(data, default=lambda obj: list(obj))
print(dump)
필자는 bytes를 특정 타일 데이터로 담아두었기에 list 형태로 반환했지만, 사용하는 형식에 따라 자유롭게 변경하면 된다.
'개발' 카테고리의 다른 글
| 티스토리 블로그에 커스텀 이모지(이모티콘) 적용하는 방법 (0) | 2025.12.19 |
|---|---|
| Blob 이모지 테스트 :blobaww: (0) | 2025.12.17 |
| [파이썬] 10진수 값을 n진수로 변환하는 코드 (0) | 2025.08.19 |
| 구글 앱 비밀번호 생성하기 (0) | 2025.08.15 |
| [파이썬] ඞ 어몽어스 캐릭터 출력하기!! (0) | 2025.06.18 |