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