Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 데이터시각화
- 코딩테스트
- 알고리즘 스터디
- 가상환경
- programmers
- dataframe
- Join
- python
- Algorithm
- Matplotlib
- type hint
- Stack
- javascript
- 백준
- 노마드코딩
- NumPy
- 자료구조
- String Method
- 프로그래머스
- 정보처리기사 c언어
- 선그래프
- aws jupyter notebook
- 알고리즘스터디
- openCV
- pandas
- Selenium
- MySQL
- 알고리즘
- 파이썬
- queue
Archives
- Today
- Total
조금씩 꾸준히 완성을 향해
[Python] Dictionary to Jason / json.dump() encoding 에러 & 한글깨짐 현상 본문
Python/기타
[Python] Dictionary to Jason / json.dump() encoding 에러 & 한글깨짐 현상
all_sound 2023. 1. 4. 11:52dictionary가 여러개 담긴 list인 'all_db'를 json 파일 형식으로 변경하던 중 몇 가지 에러가 발생했다.
아래는 제일 먼저 내가 실했했던 코드이다.
import json
def write_to_json(dictionary_data):
with open('db.json', 'w', encoding='UTF8') as file:
json.dump(dictionary_data, file)
write_to_json(all_db)
TypeError: Object of type int64 is not JSON serializable
다음과 타입 에러가 떴고 인코딩이 잘못 됐음을 알아챘다.
class NumpyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, (np.int_, np.intc, np.intp, np.int8,
np.int16, np.int32, np.int64, np.uint8,
np.uint16, np.uint32, np.uint64)):
return int(obj)
elif isinstance(obj, (np.float_, np.float16, np.float32, np.float64)):
return float(obj)
elif isinstance(obj, (np.complex_, np.complex64, np.complex128)):
return {'real': obj.real, 'imag': obj.imag}
elif isinstance(obj, (np.ndarray,)):
return obj.tolist()
elif isinstance(obj, (np.bool_)):
return bool(obj)
elif isinstance(obj, (np.void)):
return None
return json.JSONEncoder.default(self, obj)
해당 인코딩 클래스를 dump() 함수 안의 인자로 넣어주니 해결이 됐다.
import json
def write_to_json(dictionary_data):
with open('db.json', 'w', encoding='UTF8') as file:
json.dump(dictionary_data, file, cls=NumpyEncoder)
write_to_json(all_db)
json 파일이 저장이 됐고 잘 불러와 졌다.
그러나 또 한가지 문제, 한글깨짐 현상이 보였다.
dump() 함수 안의 인자로 ensure_ascii=False 를 추가해 주니 해결!!!~~
import json
def write_to_json(dictionary_data):
with open('db.json', 'w', encoding='UTF8') as file:
json.dump(dictionary_data, file, cls=NumpyEncoder, ensure_ascii=False)
write_to_json(all_db)
'Python > 기타' 카테고리의 다른 글
깃허브(Github) 대용량 파일 업로드 (git-lfs) (0) | 2023.02.19 |
---|---|
[Python] 대용량 데이터 저장하고 불러오기(CSV vs Pickle) (0) | 2023.01.06 |
[Google Colab Error] Your session crashed after using all available RAM (0) | 2022.11.20 |
VScode 터미널 & 환경변수 에러 / conda 터미널로 변경 (0) | 2022.09.15 |
[Python] 자주쓰는 pip 명령어 정리 (0) | 2022.09.11 |