Software Engineering Note

python에서 json 처리 본문

삽질과 꿀팁사이

python에서 json 처리

devmoons 2015. 4. 1. 12:58

이런 고민을 해봤다면,


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 필드 사이 사이에 공백이 보여서 제거할 목적으로 지정 해줬다.