Open Zih0 opened 3 years ago
util로 해당 과정도 함수로 만들어놨습니다. 적재적소에 사용하면 될 것 같습니다.
# server.utils.json_util.py
def jsonify(data):
return json.loads(json.dumps(data, cls=JSONEncoder))
#views.py
from server.utils.json_util import jsonify
response_object = {
"success": True,
"message": f"{user_review_len}개의 리뷰를 불러왔습니다.",
"data": jsonify(user_review_data),
}
class JSONEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, ObjectId):
return str(o)
if isinstance(o, (datetime.datetime, datetime.date, datetime.time)):
return o.isoformat()
return json.JSONEncoder.default(self, o)
datetime format도 처리해줬습니다.
Model.objects.get 또는 filter를 사용해서 데이터를 불러올 경우, Response 안에 ObjectID가 아래와 같이 반환되는 경우가 있습니다.
아래와 같은 형태로 바꿔주기 위해 utils에 JSONEncoder class를 만들었습니다.
사용방법은 아래와 같이 작성하면 됩니다.
bson.json_util 의 dumps와 loads를 사용해왔는데, JSONEncoder를 커스텀해서 사용하기 위해선 json의 dumps를 사용해야했습니다.
위 문제를 다른 방법으로 해결했다면 알려주세요.