일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고스팟
- 해커컵
- spray
- 동시성
- Raw-Request-URI
- kafka
- 개발7년차매니저1일차
- 코딩인터뷰
- coursera
- wait region split
- 데이터야놀자
- clean code
- 개발자로살아남기
- 개발자
- 데이터레이크
- 켄트백
- 2016년회고
- 실전사례
- functional thinking
- 2017회고
- 단위테스트
- 회고
- 테스트주도개발
- datalake
- hackercup2017
- 박종천
- 클린코드
- 데이터플랫폼
- 함수형 사고
- 데이터유통
- Today
- Total
Software Engineering Note
python에서 json 처리 본문
이런 고민을 해봤다면,
json string을 DB에서 꺼냈는데 이상하게 보인다.
json string을 DB에 넣었는데 한글이 깨져보인다.
json 처리 하는데 한글 문제를 겪었다.
json 필드 순서를 유지하고 싶은데?
...
다음을 참고 하시라!
내가 뭘 하려고 했냐면,
DB에서 json 필드를 꺼낸다 => json object 형태로 변경 => 특정필드 수정 => json string으로 변경 => DB에 넣는다
어떻게 했냐면,
1. DB Connection 설정
dbo = MySQLdb.connect(host="x.x.x.x", port=3306, user="user", passwd="passwd", db="dbname", charset="utf8")
2. json load
json_obj = json.loads(json_str, encoding="utf-8", object_pairs_hook=collections.OrderedDict)
# object_pairs_hook=collections.OrderedDict => json 필드 순서를 있는 그대로 보장해준다.
사실 json 안에서 필드 순서가 상관 있겠냐마는, 가져온 그대로 순서를 유지하고 싶어서 찾아봤다. 눈으로 변경된 필드 확인하기도 편하고 해서.
3. json dump
json.dumps(json_obj, ensure_ascii=False, sort_keys=False, separators=(',', ':')).encode('utf-8')
# ensure_ascii => unicode를 사용하는 설정
# sort_keys => 순서도 꺼내올때와 동일하게
# separators => 구분자에서 공백을 빼자
위에서도 언급했듯이, 변경된 필드 이외에 다른건 모두 그대로 두고싶었다.
separators는 dump 후에 json 필드 사이 사이에 공백이 보여서 제거할 목적으로 지정 해줬다.
'삽질과 꿀팁사이' 카테고리의 다른 글
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib? (0) | 2020.03.11 |
---|---|
특정 포트를 사용하는 프로세스가 없는데 Bind Exception 발생할때 (0) | 2017.04.30 |
cron job 한번만 실행되도록 하기 (0) | 2017.01.19 |